microsoft / microsoft/TypeScript
Computed property invalid in type declaration emitted in d.ts file
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
🔎 Search Terms
computed property unique symbols declaration emit
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
class T {
static readonly ["t"]: unique symbol;
}
let x: {
[T["t"]]: number;
};
let y = {
[T["t"]]: 1
}
🙁 Actual behavior
The type of x has an error saying: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol'
The type of y is emitted in declaration files just like the type of x and causes an error in the d.ts file
🙂 Expected behavior
The type of x should be valid. If we use a non-computed property name, the type would be valid (let x: { [T.t]: number; }, Playground Link). Declaration emit should not emit invalid code.
Additional information about the issue
Probably fixed by #60052 since the limitation on computed property names in types goes away.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the provided TypeScript Playground reproduction and inspect the computed-property handling for type literals and declaration emit. Compare the behavior with the limitation discussed in issue #60052; done means the type is accepted and declaration emit no longer produces an invalid .d.ts file.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100