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
|
//// [recursiveMappedTypes.ts]
// Recursive mapped types simply appear empty
type Recurse = {
[K in keyof Recurse]: Recurse[K]
}
type Recurse1 = {
[K in keyof Recurse2]: Recurse2[K]
}
type Recurse2 = {
[K in keyof Recurse1]: Recurse1[K]
}
// Repro from #27881
export type Circular<T> = {[P in keyof T]: Circular<T>};
type tup = [number, number, number, number];
function foo(arg: Circular<tup>): tup {
return arg;
}
//// [recursiveMappedTypes.js]
"use strict";
// Recursive mapped types simply appear empty
exports.__esModule = true;
function foo(arg) {
return arg;
}
//// [recursiveMappedTypes.d.ts]
export declare type Circular<T> = {
[P in keyof T]: Circular<T>;
};
|