我正在学习如何在打字稿中使用rest参数/扩展运算符。现在,我需要编写一个将数组作为参数的函数,并且我想使用rest运算符。这是功能:
insert(elem: number, ...elems: number[])
这里有elem
参数,因为我需要数组至少包含一个元素。
因此,给定这样的数组:
const numArray = [1, 2, 3, 4]
如何将数组传递给函数?我尝试了以下操作,但它给了我一个错误:
insert(...numArray)
我理解该错误,因为numArray可能有0到N个元素,并且该函数至少需要一个元素,但是我不知道对此的最佳解决方案。
有什么办法可以做到这一点?
注意:insert
函数是我正在开发的库的一部分,因此我需要使其尽可能地可用,而不取决于用户的使用方式利用它
答案 0 :(得分:1)
问题在于数组的长度是任意的。如果您将其键入为元组,并带有数字元素,然后再加上其余任意数量的数字,则它将起作用。
function insert(elem: number, ...elems: number[]) { }
const numArray:[number, ...number[]] = [1, 2, 3, 4]
insert(...numArray)
您还可以使用函数来推断将const输入为元组:
function insert(elem: number, ...elems: number[]) { }
function tuple<T extends any[]>(...a: T) { return a;}
const numArray = tuple(1, 2, 3, 4);
insert(...numArray)
答案 1 :(得分:0)