You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On JavaScript type checking (checkJs option), object initializer with function property ({ foo: function () {} }) emits ts2339 error unexpectedly, if that function gets and sets other properties of this.
🔎 Search Terms
checkJs function method definitions
🕗 Version & Regression Information
v3 (at least v3.9.7 on playground) does not emit an error. v4 emits an error,
// @ts-checkconstx={a: 0,b: 0,functionSyntax: function(){this.a=1;console.log(this.b);// Property 'b' does not exist on type 'functionSyntax'.(2339)},methodSyntax(){this.a=1;console.log(this.b);// no error},functionSyntaxWithoutAssignment: function(){console.log(this.b);// no error}};
🙁 Actual behavior
ts(2339) error Property '{name}' does not exist on type '{function name}'. is reported
🙂 Expected behavior
No error
The method declaration syntax ({ foo() {} }) does not emit an error. I think that function syntax should have the same behavior for this checking.
Bug Report
On JavaScript type checking (
checkJsoption), object initializer with function property ({ foo: function () {} }) emits ts2339 error unexpectedly, if that function gets and sets other properties ofthis.🔎 Search Terms
checkJs function method definitions
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play?declaration=false&useJavaScript=true#code/MYewdgzgLgBAHjAvDA3gKBpmBDAXDABgBoMsAjfY0zAMwFcxgoBLcAZQE8wps597GLcDAAUASlTUsmKAAtmEAHTYkMAIwBuKdNCQQAGwCmi-SADmIuQsVkxGmAHoHMAAoAnEAAdDbqBxgA5GQBMAAmIIYQMGAgsIZwCrDCft6BAkysYJzcvAGKIgBMAMxFAJxiUgC+JNIAtoZyIKHZPHDiktLSVkoqyJraWLoQBsamFt02dlU1WOlCWVytAOrMjXRQAIIQEMxmYPXc-AwZwu3onYPgw0Ym5pbySrZa0pVolRpAA
💻 Code
🙁 Actual behavior
ts(2339) error
Property '{name}' does not exist on type '{function name}'.is reported🙂 Expected behavior
No error
The method declaration syntax (
{ foo() {} }) does not emit an error. I think that function syntax should have the same behavior for this checking.