Microsoft/TypeScript
View on GitHubUnable to use Symbol as key for jsdoc `@typedef`
Open
#47,259 opened on Dec 28, 2021
BugDomain: JSDocHelp Wanted
Repository metrics
- Stars
- (48,455 stars)
- PR merge metrics
- (Avg merge 6d 17h) (9 merged PRs in 30d)
Description
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`