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
|
//// [tests/cases/compiler/circularInlineMappedGenericTupleTypeNoCrash.ts] ////
=== circularInlineMappedGenericTupleTypeNoCrash.ts ===
class Foo<Elements extends readonly unknown[]> {
>Foo : Foo<Elements>
public readonly elements: { [P in keyof Elements]: { bar: Elements[P] } };
>elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>bar : Elements[P]
public constructor(
...elements: { [P in keyof Elements]: { bar: Elements[P] } }
>elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>bar : Elements[P]
) {
this.elements = elements;
>this.elements = elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>this.elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>this : this
>elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
}
public add(): Foo<[...Elements, "abc"]> {
>add : () => Foo<[...Elements, "abc"]>
return new Foo<[...Elements, "abc"]>(...this.elements, { bar: "abc" });
>new Foo<[...Elements, "abc"]>(...this.elements, { bar: "abc" }) : Foo<[...Elements, "abc"]>
>Foo : typeof Foo
>...this.elements : { bar: unknown; }
>this.elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>this : this
>elements : { [P in keyof Elements]: { bar: Elements[P]; }; }
>{ bar: "abc" } : { bar: "abc"; }
>bar : "abc"
>"abc" : "abc"
}
}
|