1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
=== tests/cases/compiler/mappedTypeIndexedAccess.ts ===
// Repro from #15756
type Pairs<T> = {
>Pairs : Pairs<T>
[TKey in keyof T]: {
key: TKey;
>key : TKey
value: T[TKey];
>value : T[TKey]
};
};
type Pair<T> = Pairs<T>[keyof T];
>Pair : Pair<T>
type FooBar = {
>FooBar : { foo: string; bar: number; }
foo: string;
>foo : string
bar: number;
>bar : number
};
// Error expected here
let pair1: Pair<FooBar> = {
>pair1 : Pair<FooBar>
>{ key: "foo", value: 3} : { key: "foo"; value: number; }
key: "foo",
>key : "foo"
>"foo" : "foo"
value: 3
>value : number
>3 : 3
};
// Error expected here
let pair2: Pairs<FooBar>[keyof FooBar] = {
>pair2 : { key: "foo"; value: string; } | { key: "bar"; value: number; }
>{ key: "foo", value: 3} : { key: "foo"; value: number; }
key: "foo",
>key : "foo"
>"foo" : "foo"
value: 3
>value : number
>3 : 3
};
|