microsoft / microsoft/TypeScript
Infer type isn't contextual typed by type bounds
Open
Nobody has claimed this yet.
Bug
Domain: Conditional Types
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Bug Report
Infer type isn't contextual typed by type bounds
type Foo<T> = T extends string ? Record<T, number> : never;
type Foo2<T extends {a:string}>= T extends {a: infer A} ? Record<A, number>:never; //error here, A should extends string already, but seems not
🔎 Search Terms
generic infer bounds
🕗 Version & Regression Information
4.2.3
⏯ Playground Link
💻 Code
type Foo<T> = T extends string ? Record<T, number> : never;
type Foo2<T extends {a:string}>= T extends {a: infer A} ? Record<A, number>:never; //error here, A should extends string already, but seems not
🙁 Actual behavior
throw error
🙂 Expected behavior
not throw error
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 linked TypeScript Playground and the reduced Foo2 example to reproduce the error. The issue names no source file or test; trace how the compiler handles inferred type bounds, then verify that the example accepts Record<A, number> as expected and add regression coverage.
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