1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
tests/cases/compiler/typeArgumentDefaultUsesConstraintOnCircularDefault.ts(1,30): error TS2744: Type parameter defaults can only reference previously declared type parameters.
tests/cases/compiler/typeArgumentDefaultUsesConstraintOnCircularDefault.ts(3,18): error TS2322: Type '{ foo: string; }' is not assignable to type 'Test<any>'.
Object literal may only specify known properties, and 'foo' does not exist in type 'Test<any>'.
==== tests/cases/compiler/typeArgumentDefaultUsesConstraintOnCircularDefault.ts (2 errors) ====
type Test<T extends string = T> = { value: T }; // Error
~
!!! error TS2744: Type parameter defaults can only reference previously declared type parameters.
let zz: Test = { foo: "abc" }; // should error on comparison with Test<string>
~~~~~~~~~~
!!! error TS2322: Type '{ foo: string; }' is not assignable to type 'Test<any>'.
!!! error TS2322: Object literal may only specify known properties, and 'foo' does not exist in type 'Test<any>'.
let zzy: Test = { value: {} };
// Simplified repro from #28873
class C1<T extends C1 = any> {}
class C2<T extends C2<any> = any> {}
|