TypeScript Version: 3.0.1
Code
type JSONModel<T> = T extends object ? string : number;
interface IBase<T> {
p: JSONModel<T>; // when don't use JSONModel<T> then infered correctly
}
interface I extends IBase<{ a: number }> {}
type A = I extends IBase<infer T> ? T : never;
Expected behavior:
type A is { a: number }
Actual behavior:
type A is {}
TypeScript Version: 3.0.1
Code
Expected behavior:
type A is { a: number }
Actual behavior:
type A is {}