microsoft / microsoft/TypeScript
String union types in props inside generic types
Open
Nobody has claimed this yet.
Bug
Domain: Indexed Access Types
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: 3.9.2 & 4.0.0-beta
Code
type A = {
foo: number
}
type B<T extends string> = {
[key in T]?: number
}
type C<T extends string> = A & B<T>
const f = <T extends string>(prop: T, value: number): C<T> => {
const c: C<T> = {
foo: 6
}
c[prop] = value
return c
}
type Props = 'bar' | 'baz'
const o = f<Props>('bar', 6)
Expected behavior:
It should work :)
Actual behavior:
line 16: Type 'number' is not assignable to type 'C[T]'.
Playground Link: click
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 provided Playground reproduction with the listed TypeScript versions and confirm the diagnostic on line 16. Trace the generic indexed assignment in the compiler, then add coverage so the example compiles without the reported error; no source file or test is named in the issue.
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