microsoft / microsoft/TypeScript
Literal tested as key of a certain type cannot be used as an index type
Open
Nobody has claimed this yet.
Bug
Domain: Indexed Access Types
Help Wanted
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.4k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
🔎 Search Terms
"literal", "extends", "keyof", "cannot be used to index type", "conditional"
🕗 Version & Regression Information
Versions: ^5.0 (regression)
⏯ Playground Link
💻 Code
type T = {
k: symbol,
other: boolean, // another key seems required for the bug to appear
}
// Type '"k"' cannot be used as an index type.(2538)
type C = 'k' extends keyof T ? T['k'] : never; // any
🙁 Actual behavior
An error is produced in the positive clause of the conditional type.
The resulting type is incorrect.
🙂 Expected behavior
No error.
Additional information about the issue
No response
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 by running the TypeScript Playground reproduction linked in the issue with TypeScript 5.3.3, then compare the behavior across the reported ^5.0 versions. Trace the conditional type and indexed-access checking involved in the example; done means the positive clause produces no error and the resulting type is correct.
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
- 35/100