Closed
Description
Bug Report
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,
⏯ Playground Link
💻 Code
// @ts-check
const x = {
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.
Metadata
Metadata
Assignees
Labels
No labels