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
|
//// [tests/cases/compiler/contextualTypeSelfReferencing.ts] ////
=== contextualTypeSelfReferencing.ts ===
// repro from https://github.com/microsoft/TypeScript/issues/54048
type narrow<def> = def extends string
>narrow : narrow<def>
? def
: def extends [unknown, ...unknown[]]
? def
: {
[k in keyof def]: narrow<def[k]>;
};
declare const parse: <def>(def: narrow<def>) => def;
>parse : <def>(def: narrow<def>) => def
>def : narrow<def>
const result = parse([{ a: "foo" }]);
>result : [{ a: "foo"; }]
>parse([{ a: "foo" }]) : [{ a: "foo"; }]
>parse : <def>(def: narrow<def>) => def
>[{ a: "foo" }] : [{ a: "foo"; }]
>{ a: "foo" } : { a: "foo"; }
>a : "foo"
>"foo" : "foo"
|