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 61 62 63 64 65 66 67 68 69 70 71
|
=== tests/cases/conformance/types/mapped/mappedTypeErrors2.ts ===
// Repros from #17238
type AB = {
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
a: 'a'
>a : Symbol(a, Decl(mappedTypeErrors2.ts, 2, 11))
b: 'a'
>b : Symbol(b, Decl(mappedTypeErrors2.ts, 3, 10))
};
type T1<K extends keyof AB> = { [key in AB[K]]: true };
>T1 : Symbol(T1, Decl(mappedTypeErrors2.ts, 5, 2))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 7, 8))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>key : Symbol(key, Decl(mappedTypeErrors2.ts, 7, 33))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 7, 8))
type T2<K extends 'a'|'b'> = T1<K>[K]; // Error
>T2 : Symbol(T2, Decl(mappedTypeErrors2.ts, 7, 55))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 8, 8))
>T1 : Symbol(T1, Decl(mappedTypeErrors2.ts, 5, 2))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 8, 8))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 8, 8))
type R = AB[keyof AB]; // "a"
>R : Symbol(R, Decl(mappedTypeErrors2.ts, 8, 38))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
type T3 = { [key in R]: true };
>T3 : Symbol(T3, Decl(mappedTypeErrors2.ts, 10, 22))
>key : Symbol(key, Decl(mappedTypeErrors2.ts, 11, 13))
>R : Symbol(R, Decl(mappedTypeErrors2.ts, 8, 38))
type T4<K extends 'a'|'b'> = T3[K] // Error
>T4 : Symbol(T4, Decl(mappedTypeErrors2.ts, 11, 31))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 12, 8))
>T3 : Symbol(T3, Decl(mappedTypeErrors2.ts, 10, 22))
>K : Symbol(K, Decl(mappedTypeErrors2.ts, 12, 8))
type T5<S extends 'a'|'b'|'extra'> = {[key in AB[S]]: true}[S]; // Error
>T5 : Symbol(T5, Decl(mappedTypeErrors2.ts, 12, 34))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 14, 8))
>key : Symbol(key, Decl(mappedTypeErrors2.ts, 14, 39))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 14, 8))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 14, 8))
type T6<S extends 'a'|'b', L extends 'a'|'b'> = {[key in AB[S]]: true}[L]; // Error
>T6 : Symbol(T6, Decl(mappedTypeErrors2.ts, 14, 63))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 16, 8))
>L : Symbol(L, Decl(mappedTypeErrors2.ts, 16, 26))
>key : Symbol(key, Decl(mappedTypeErrors2.ts, 16, 50))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 16, 8))
>L : Symbol(L, Decl(mappedTypeErrors2.ts, 16, 26))
type T7<S extends 'a'|'b', L extends 'a'> = {[key in AB[S]]: true}[L];
>T7 : Symbol(T7, Decl(mappedTypeErrors2.ts, 16, 74))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 18, 8))
>L : Symbol(L, Decl(mappedTypeErrors2.ts, 18, 26))
>key : Symbol(key, Decl(mappedTypeErrors2.ts, 18, 46))
>AB : Symbol(AB, Decl(mappedTypeErrors2.ts, 0, 0))
>S : Symbol(S, Decl(mappedTypeErrors2.ts, 18, 8))
>L : Symbol(L, Decl(mappedTypeErrors2.ts, 18, 26))
|