Microsoft/TypeScript
Auf GitHub ansehenConfusing error on computed name class member
Open
#61.510 geöffnet am 31. März 2025
Domain: Error MessagesHelp WantedPossible Improvement
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
🔎 Search Terms
late bindable computed symbol class member
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
const uniqueSymbol0 = Symbol.for("");
function getUniqueSymbol0(): typeof uniqueSymbol0 {
return uniqueSymbol0;
}
class Cls3 {
[getUniqueSymbol0()] = "first"; // A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.(1166)
}
🙁 Actual behavior
The error is confusing because this expression has a unique symbol type already
🙂 Expected behavior
This error should mention more accurate late-bindable requirements. From the source code:
/**
* Indicates whether a declaration name is definitely late-bindable.
* A declaration name is only late-bindable if:
* - It is a `ComputedPropertyName`.
* - Its expression is an `Identifier` or either a `PropertyAccessExpression` an
* `ElementAccessExpression` consisting only of these same three types of nodes.
* - The type of its expression is a string or numeric literal type, or is a `unique symbol` type.
*/
Additional information about the issue
No response