function foo(x:number, y:number, z:number) {
console.log(x,y,z);
}
var args:number[] = [0, 1, 2];
foo(...args);
Why am i getting getting this
I think @Fenton explains it very well but I would like to add some more documentation and possible solutions.
Solutions:
Function overload. I prefer this solution in this case because it keeps some kind of type safety and avoids ignore and any. The original method and function call does not need to be rewritten at all.
function foo(...args: number[]): void
function foo(x: number, y: number, z: number) {
console.log(x, y, z);
}
var args: number[] = [0, 1, 2];
foo(...args);
Use @ts-ignore to ignore specific line, TypeScript 2.3
function foo(x: number, y: number, z: number) {
console.log(x, y, z);
}
var args: number[] = [0, 1, 2];
// @ts-ignore
foo(...args);
Use as any.
function foo(x: number, y: number, z: number) {
console.log(x, y, z);
}
var args: number[] = [0, 1, 2];
(foo as any)(...args);
Link with documentation regarding the spread operator:
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html
Discussions regarding this:
https://github.com/Microsoft/TypeScript/issues/5296 https://github.com/Microsoft/TypeScript/issues/11780 https://github.com/Microsoft/TypeScript/issues/14981 https://github.com/Microsoft/TypeScript/issues/15375