如何在打字稿元组中使用扩展运算符?
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[]];
【讨论】:
以上是关于如何在打字稿元组中使用扩展运算符?的主要内容,如果未能解决你的问题,请参考以下文章