|
| 1 | +tests/cases/compiler/normalizedIntersectionTooComplex.ts(36,14): error TS2590: Expression produces a union type that is too complex to represent. |
| 2 | +tests/cases/compiler/normalizedIntersectionTooComplex.ts(36,40): error TS7006: Parameter 'x' implicitly has an 'any' type. |
| 3 | + |
| 4 | + |
| 5 | +==== tests/cases/compiler/normalizedIntersectionTooComplex.ts (2 errors) ==== |
| 6 | + // Repro from #30050 |
| 7 | + |
| 8 | + interface Obj<T> { |
| 9 | + ref: T; |
| 10 | + } |
| 11 | + interface Func<T> { |
| 12 | + (x: T): void; |
| 13 | + } |
| 14 | + type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; |
| 15 | + type CtorOf<T> = (arg: UnionToIntersection<T>) => T; |
| 16 | + |
| 17 | + interface Big { |
| 18 | + "0": { common?: string; "0"?: number, ref?: Obj<Big["0"]> | Func<Big["0"]>; } |
| 19 | + "1": { common?: string; "1"?: number, ref?: Obj<Big["1"]> | Func<Big["1"]>; } |
| 20 | + "2": { common?: string; "2"?: number, ref?: Obj<Big["2"]> | Func<Big["2"]>; } |
| 21 | + "3": { common?: string; "3"?: number, ref?: Obj<Big["3"]> | Func<Big["3"]>; } |
| 22 | + "4": { common?: string; "4"?: number, ref?: Obj<Big["4"]> | Func<Big["4"]>; } |
| 23 | + "5": { common?: string; "5"?: number, ref?: Obj<Big["5"]> | Func<Big["5"]>; } |
| 24 | + "6": { common?: string; "6"?: number, ref?: Obj<Big["6"]> | Func<Big["6"]>; } |
| 25 | + "7": { common?: string; "7"?: number, ref?: Obj<Big["7"]> | Func<Big["7"]>; } |
| 26 | + "8": { common?: string; "8"?: number, ref?: Obj<Big["8"]> | Func<Big["8"]>; } |
| 27 | + "9": { common?: string; "9"?: number, ref?: Obj<Big["9"]> | Func<Big["9"]>; } |
| 28 | + "10": { common?: string; "10"?: number, ref?: Obj<Big["10"]> | Func<Big["10"]>; } |
| 29 | + "11": { common?: string; "11"?: number, ref?: Obj<Big["11"]> | Func<Big["11"]>; } |
| 30 | + "12": { common?: string; "12"?: number, ref?: Obj<Big["12"]> | Func<Big["12"]>; } |
| 31 | + "13": { common?: string; "13"?: number, ref?: Obj<Big["13"]> | Func<Big["13"]>; } |
| 32 | + "14": { common?: string; "14"?: number, ref?: Obj<Big["14"]> | Func<Big["14"]>; } |
| 33 | + "15": { common?: string; "15"?: number, ref?: Obj<Big["15"]> | Func<Big["15"]>; } |
| 34 | + "16": { common?: string; "16"?: number, ref?: Obj<Big["16"]> | Func<Big["16"]>; } |
| 35 | + "17": { common?: string; "17"?: number, ref?: Obj<Big["17"]> | Func<Big["17"]>; } |
| 36 | + } |
| 37 | + declare function getCtor<T extends keyof Big>(comp: T): CtorOf<Big[T]> |
| 38 | + |
| 39 | + declare var all: keyof Big; |
| 40 | + const ctor = getCtor(all); |
| 41 | + const comp = ctor({ common: "ok", ref: x => console.log(x) }); |
| 42 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 43 | +!!! error TS2590: Expression produces a union type that is too complex to represent. |
| 44 | + ~ |
| 45 | +!!! error TS7006: Parameter 'x' implicitly has an 'any' type. |
| 46 | + |
0 commit comments