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
|
=== tests/cases/conformance/types/mapped/recursiveMappedTypes.ts ===
// Recursive mapped types simply appear empty
type Recurse = {
>Recurse : Symbol(Recurse, Decl(recursiveMappedTypes.ts, 0, 0))
[K in keyof Recurse]: Recurse[K]
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 3, 5))
>Recurse : Symbol(Recurse, Decl(recursiveMappedTypes.ts, 0, 0))
>Recurse : Symbol(Recurse, Decl(recursiveMappedTypes.ts, 0, 0))
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 3, 5))
}
type Recurse1 = {
>Recurse1 : Symbol(Recurse1, Decl(recursiveMappedTypes.ts, 4, 1))
[K in keyof Recurse2]: Recurse2[K]
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 7, 5))
>Recurse2 : Symbol(Recurse2, Decl(recursiveMappedTypes.ts, 8, 1))
>Recurse2 : Symbol(Recurse2, Decl(recursiveMappedTypes.ts, 8, 1))
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 7, 5))
}
type Recurse2 = {
>Recurse2 : Symbol(Recurse2, Decl(recursiveMappedTypes.ts, 8, 1))
[K in keyof Recurse1]: Recurse1[K]
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 11, 5))
>Recurse1 : Symbol(Recurse1, Decl(recursiveMappedTypes.ts, 4, 1))
>Recurse1 : Symbol(Recurse1, Decl(recursiveMappedTypes.ts, 4, 1))
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 11, 5))
}
// Repro from #27881
export type Circular<T> = {[P in keyof T]: Circular<T>};
>Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
>T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
>P : Symbol(P, Decl(recursiveMappedTypes.ts, 16, 28))
>T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
>Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
>T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
type tup = [number, number, number, number];
>tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
function foo(arg: Circular<tup>): tup {
>foo : Symbol(foo, Decl(recursiveMappedTypes.ts, 17, 44))
>arg : Symbol(arg, Decl(recursiveMappedTypes.ts, 19, 13))
>Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
>tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
>tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
return arg;
>arg : Symbol(arg, Decl(recursiveMappedTypes.ts, 19, 13))
}
|