Closed
Description
Bug Report
π Search Terms
index type generic
π Version & Regression Information
4.9.0-dev.20221025
β― Playground Link
Playground link with relevant code
π» Code
interface Foo {
a: number[]
b: string[]
}
declare const foo: Foo
const setValue = <T extends keyof Foo>(key: T, value: Foo[T][number]) => {
foo[key] = [value]
}
π Actual behavior
Type '(string | number)[]' is not assignable to type 'Foo[T]'.
Type '(string | number)[]' is not assignable to type 'number[] & string[]'.
Type '(string | number)[]' is not assignable to type 'number[]'.
Type 'string | number' is not assignable to type 'number'.
Type 'string' is not assignable to type 'number'.
π Expected behavior
no error, since it works when the type of value is Foo[T]
:
const setValue = <T extends keyof Foo>(key: T, value: Foo[T]) => {
foo[key] = value
}