TypeScript/tests/cases/conformance/types/conditional/inferTypes2.ts
2019-04-27 09:56:11 -07:00

24 lines
637 B
TypeScript

// @strict: true
// @declaration: true
// Repros from #22755
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
export function bar<T>(obj: T) {
return foo(obj);
}
export type BadNested<T> = { x: T extends number ? T : string };
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
export function bar2<T>(obj: T) {
return foo2(obj);
}
// Repros from #31099
type Weird = any extends infer U ? U : never;
type AlsoWeird = unknown extends infer U ? U : never;
const a: Weird = null;
const b: string = a;