Microsoft/TypeScript
Voir sur GitHubUnable to use Symbol as key for jsdoc `@typedef`
Open
#47 259 ouverte le 28 déc. 2021
BugDomain: JSDocHelp Wanted
Métriques du dépôt
- Stars
- (48 455 stars)
- Métriques de merge PR
- (Merge moyen 6j 17h) (9 PRs mergées en 30 j)
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`