Reputation: 4192
I have this situation in my typescript code:
const first = (value: any[]) => {
}
const test = (...args: any[]) => first(...args);
In function test
I pass all params in first
function. first(...args)
.
Doing this I get a typescript error: A spread argument must either have a tuple type or be passed to a rest parameter.(2556)
.
I notice many answers on this topic but they don't solve my issue.
How to solve this issue?
Upvotes: 4
Views: 3127
Reputation: 18602
Call first
with args
const test = (...args: any[]) => first(args);
Upvotes: 1
Reputation: 11
Typescript can be used to capture variable number of arguments into an array in a way similar to other C-like languages:
function varArgs(...args: any[]) {
console.log(args.length);
}
To pass the array to a function accepting a variable number of arguments, spread syntax can be used:
function varArgs(...args: any[]) {
console.log(...args);
}
This approach works just as well with arrow functions:
let varArgs = (...args: any[]) => {
console.log(...args);
}
Upvotes: 1
Reputation: 19391
Your first()
function expects to get an array/tuple.
So you can simply pass the array.
const first = (value: any[]) => {};
const test = (...args: any[]) => first(args);
or you can make the first
method accept variable arguments:
const first = (...value: any[]) => {};
const test = (...args: any[]) => first(...args);
Upvotes: 2
Reputation: 8412
The error means that you need to use an Array and spread arg within it:
const first = (value: any[]) => {};
const test = (...args: any[]) => first([...args]);
Upvotes: 3