Skip to content

Commit e54606b

Browse files
committed
Add tests
1 parent a925172 commit e54606b

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

tests/cases/conformance/types/conditional/conditionalTypes1.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,33 @@ type T80 = Eq2<true, true>; // true
226226
type T81 = Eq2<true, false>; // false
227227
type T82 = Eq2<false, true>; // false
228228
type T83 = Eq2<false, false>; // true
229+
230+
// Repro from #21756
231+
232+
type Foo<T> = T extends string ? boolean : number;
233+
type Bar<T> = T extends string ? boolean : number;
234+
const convert = <U>(value: Foo<U>): Bar<U> => value;
235+
236+
type Baz<T> = Foo<T>;
237+
const convert2 = <T>(value: Foo<T>): Baz<T> => value;
238+
239+
function f31<T>() {
240+
type T1 = T extends string ? boolean : number;
241+
type T2 = T extends string ? boolean : number;
242+
var x: T1;
243+
var x: T2;
244+
}
245+
246+
function f32<T, U>() {
247+
type T1 = T & U extends string ? boolean : number;
248+
type T2 = Foo<T & U>;
249+
var z: T1;
250+
var z: T2; // Error, T2 is distributive, T1 isn't
251+
}
252+
253+
function f33<T, U>() {
254+
type T1 = Foo<T & U>;
255+
type T2 = Bar<T & U>;
256+
var z: T1;
257+
var z: T2;
258+
}

0 commit comments

Comments
 (0)