* use emit into iife * Update emit * Revert un-related changes * Allow super in static context * Allow this and super in static property declaration * Add more tests * Avoid errors * Accept baseline * Accept baseline * Add decorated classes test * Add errors * Avoid this in emitter * make lint happy * Add class expression tests * Add computed name test * Avoid super if target below es6 * Adjust function boundary * Add internal * Fix minor CR issues * accept baseline * Update behavior * Avoid spaces * Make lint happy * Avoid function boundary utils * Update baseline * Avoid errors * Accept baseline * Accept baseline * Accept baseline * Accept baseline * Use substitutions * Full coverage for super, this, merge static and private context * Fix use-before-def in static fields Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
60 lines
1.3 KiB
Plaintext
60 lines
1.3 KiB
Plaintext
=== tests/cases/conformance/types/conditional/variance.ts ===
|
|
// Test cases for parameter variances affected by conditional types.
|
|
|
|
// Repro from #30047
|
|
|
|
interface Foo<T> {
|
|
prop: T extends unknown ? true : false;
|
|
>prop : T extends unknown ? true : false
|
|
>true : true
|
|
>false : false
|
|
}
|
|
|
|
const foo = { prop: true } as const;
|
|
>foo : { readonly prop: true; }
|
|
>{ prop: true } as const : { readonly prop: true; }
|
|
>{ prop: true } : { readonly prop: true; }
|
|
>prop : true
|
|
>true : true
|
|
|
|
const x: Foo<1> = foo;
|
|
>x : Foo<1>
|
|
>foo : { readonly prop: true; }
|
|
|
|
const y: Foo<number> = foo;
|
|
>y : Foo<number>
|
|
>foo : { readonly prop: true; }
|
|
|
|
const z: Foo<number> = x;
|
|
>z : Foo<number>
|
|
>x : Foo<1>
|
|
|
|
|
|
// Repro from #30118
|
|
|
|
class Bar<T extends string> {
|
|
>Bar : Bar<T>
|
|
|
|
private static instance: Bar<string>[] = [];
|
|
>instance : Bar<string>[]
|
|
>[] : never[]
|
|
|
|
cast(_name: ([T] extends [string] ? string : string)) { }
|
|
>cast : (_name: ([T] extends [string] ? string : string)) => void
|
|
>_name : [T] extends [string] ? string : string
|
|
|
|
pushThis() {
|
|
>pushThis : () => void
|
|
|
|
Bar.instance.push(this);
|
|
>Bar.instance.push(this) : number
|
|
>Bar.instance.push : (...items: Bar<string>[]) => number
|
|
>Bar.instance : Bar<string>[]
|
|
>Bar : typeof Bar
|
|
>instance : Bar<string>[]
|
|
>push : (...items: Bar<string>[]) => number
|
|
>this : this
|
|
}
|
|
}
|
|
|