如何在打字稿元组中使用扩展运算符?

Posted

技术标签:

【中文标题】如何在打字稿元组中使用扩展运算符?【英文标题】:How to use the spread operator in a typescript tuple? 【发布时间】:2017-12-09 14:42:47 【问题描述】:

我想指定数组其余部分的外观,但不知道数组有多少值。我怎样才能实现这样的目标? (游乐场版here):

type numStrArr = [number, ...string];

let arr: numStrArr = [1, 'hi', 'other string'];

然而,上面的代码在展开运算符处抛出了错误Type expected.

我知道有一个proposal,但我现在如何实现类似的行为?

【问题讨论】:

你应该使用对象而不是数组。 我知道这会起作用,我只是对它如何起作用很感兴趣 我认为这是不可能的。您可以使用[number, string]0: number, [i: number]: string | number,但它们都将额外的参数输入为number | string,而不是string。你能得到的最接近的可能是[number, string, string, string, string, string, string] 玩了一下,我能想到的最好的方法是扩展 Array 的接口。游乐场链接太长。我真的看不出任何使用对象不能更好地处理的用例...... 【参考方案1】:

我知道这个问题已有 3 年历史,但现在支持该功能。您需要做的就是将类型更改为可以传播的类型。阅读更多关于它的信息here:


// no more error...
type numStrArr = [number, ...string[]];

【讨论】:

以上是关于如何在打字稿元组中使用扩展运算符?的主要内容,如果未能解决你的问题,请参考以下文章

扩展(映射)元组类型

如何将 Storybook 打字稿元声明转换为 MDX?

在运算符中使用以匹配元组中的项目

Python中的元组(Tuple)

如何提高扩展运算符的性能

如何在角度 2 输入上使用扩展运算符