mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Add tests
This commit is contained in:
@@ -226,3 +226,33 @@ type T80 = Eq2<true, true>; // true
|
||||
type T81 = Eq2<true, false>; // false
|
||||
type T82 = Eq2<false, true>; // false
|
||||
type T83 = Eq2<false, false>; // true
|
||||
|
||||
// Repro from #21756
|
||||
|
||||
type Foo<T> = T extends string ? boolean : number;
|
||||
type Bar<T> = T extends string ? boolean : number;
|
||||
const convert = <U>(value: Foo<U>): Bar<U> => value;
|
||||
|
||||
type Baz<T> = Foo<T>;
|
||||
const convert2 = <T>(value: Foo<T>): Baz<T> => value;
|
||||
|
||||
function f31<T>() {
|
||||
type T1 = T extends string ? boolean : number;
|
||||
type T2 = T extends string ? boolean : number;
|
||||
var x: T1;
|
||||
var x: T2;
|
||||
}
|
||||
|
||||
function f32<T, U>() {
|
||||
type T1 = T & U extends string ? boolean : number;
|
||||
type T2 = Foo<T & U>;
|
||||
var z: T1;
|
||||
var z: T2; // Error, T2 is distributive, T1 isn't
|
||||
}
|
||||
|
||||
function f33<T, U>() {
|
||||
type T1 = Foo<T & U>;
|
||||
type T2 = Bar<T & U>;
|
||||
var z: T1;
|
||||
var z: T2;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user