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
|
=== tests/cases/compiler/typeAliasFunctionTypeSharedSymbol.ts ===
// Repro from comment in #21496
function Mixin<TBase extends {new (...args: any[]): {}}>(Base: TBase) {
>Mixin : <TBase extends new (...args: any[]) => {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
>args : any[]
>Base : TBase
return class extends Base {
>class extends Base { } : { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
>Base : {}
};
}
type Mixin = ReturnTypeOf<typeof Mixin>
>Mixin : { new (...args: any[]): Mixin<new (...args: any[]) => {}>.(Anonymous class); prototype: Mixin<any>.(Anonymous class); } & (new (...args: any[]) => {})
>Mixin : <TBase extends new (...args: any[]) => {}>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
type ReturnTypeOf<V> = V extends (...args: any[])=>infer R ? R : never;
>ReturnTypeOf : ReturnTypeOf<V>
>args : any[]
type Crashes = number & Mixin;
>Crashes : number & { new (...args: any[]): Mixin<new (...args: any[]) => {}>.(Anonymous class); prototype: Mixin<any>.(Anonymous class); } & (new (...args: any[]) => {})
|