tests/cases/conformance/expressions/functionCalls/callWithSpread4.ts(18,5): error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. tests/cases/conformance/expressions/functionCalls/callWithSpread4.ts(27,6): error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. ==== tests/cases/conformance/expressions/functionCalls/callWithSpread4.ts (2 errors) ==== type R = { a: number } type W = { b: number } type RW = { a: number, b: number } declare const pli: { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } declare var writes: W declare var reads: R declare var tr: W declare var gun: RW[] declare var gz: RW[] declare var fun: (inp: any) => AsyncGenerator pli( reads, ...gun, ~~~~~~ !!! error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. tr, fun, ...gz, writes ); declare function test(x: any, y: () => string): string | undefined; declare var anys: any[] test(...anys) ~~~~~~~ !!! error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. pli(...[reads, writes, writes] as const)