BugDomain: JSDocHelp Wanted
倉庫指標
- Star
- (48,455 star)
- PR 合併指標
- (平均合併 6天 17小時) (30 天內合併 9 個 PR)
描述
Bug Report
🔎 Search Terms
jsdoc ts2454
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about
2454
⏯ Playground Link
Playground link with relevant code
💻 Code
class Foo {
someProp = "value";
}
const sym = Symbol("sym");
/** @typedef {Foo & { [sym]?: string }} FooWithSym */
// ^^^----- Variable 'sym' is used before being assigned (2454)
Note that this error only happens with strictNullChecks enabled.
🙁 Actual behavior
ts2454
🙂 Expected behavior
No errors
When using TypeScript rather than JavaScript, this error does not occur.
Here is the TypeScript equivalent: (playground)
// Normally this would be an imported class
class Foo {
someProp = "value";
}
// add the symbol type to Foo
const sym = Symbol("sym");
type FooWithSym = Foo & {
[sym]?: string;
}
const withoutSym = new Foo();
withoutSym[sym] = "test"; // error, as expected
const withSym : FooWithSym = new Foo();
withSym[sym] = "test"; // this works
const y = withSym[sym];
console.log(y); // y is `string | undefined`