Add tests

This commit is contained in:
Anders Hejlsberg
2018-02-08 17:14:52 -08:00
parent a9251723c7
commit e54606b7bf
@@ -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;
}