// @strict: true // Repro from #37475 export type A = "number" | "null" | A[]; export type F = null extends T ? [F>, "null"] : T extends number ? "number" : never; export type G = { [k in keyof T]: F }; interface K { b: number | null; } const gK: { [key in keyof K]: A } = { b: ["number", "null"] }; function foo(g: G): T { return {} as any; } foo(gK);