Microsoft/TypeScript
Auf GitHub ansehenUnable to use Symbol as key for jsdoc `@typedef`
Open
#47.259 geöffnet am 28. Dez. 2021
BugDomain: JSDocHelp Wanted
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
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`