why the case 1 not work ?
it a bug ?
export type This1<S extends System=System> = S extends infer SS
? SS extends System< infer RU >
? RU extends [infer M, infer R, infer A ]
? [M, R, A, 100]
: never
: never
: never;
export type This2<S extends System=System> = S extends System< infer RU >
? RU extends [infer M, infer R, infer A ]
? [[M, R, A, 100]]
: never
: never
export abstract class System<T extends number[] = number[]> {
abstract rules: T;
}
export class SystemA {
declare rules:[1, 2, 3];
test1( o: This1<this> ): void {
isTest( o );
isTest2( o ); //🟥 why this not work !?
}
test2([o]: This2<this> ): void {
isTest( o );
isTest2( o ); //🟢 ok here !
}
}
function isTest<T extends [1, 2, 3, 100]>( t: T ): T {
return t;
}
function isTest2<T extends [1, 2, 3]>( t: T ): T {
return t;
}