jac*_*sro 5 parameters typescript
我正在学习如何在打字稿中使用 rest 参数/扩展运算符。现在,我需要编写一个将数组作为参数的函数,并且我想使用 rest 运算符。这是函数:
insert(elem: number, ...elems: number[])
Run Code Online (Sandbox Code Playgroud)
的elem参数是有,因为我需要在阵列具有至少一个元素。
所以,给定一个这样的数组:
const numArray = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
如何将数组传递给函数?我已经尝试了以下但它给了我一个错误:
insert(...numArray)
Run Code Online (Sandbox Code Playgroud)
我理解错误,因为 numArray 可能有 0 到 N 个元素,并且该函数至少需要一个元素,但我不知道最佳解决方案。
有没有办法实现这一目标?
注意:该insert函数是我正在开发的库的一部分,因此我需要使其尽可能可用,而不取决于用户将如何使用它
jan*_*mon 17
您可以创建至少一个(或多个)项目的数组类型并将其展开:
function insert(...elem: [number, ...number[]]) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以编写一个辅助类型,例如:
type AtLeastOne<T> = [T, ...T[]]
function insert(...element: AtLeastOne<number>) {
//...
}
Run Code Online (Sandbox Code Playgroud)