将元素集合加载到Typescript中的元组中

时间:2016-09-28 03:35:04

标签: typescript tuples

我有[x fval] = fminbnd(@(x)-tan(cos(x)),3,8) 并尝试使用它来加载Tuple中强类型的简单数据值列表。但是我必须使用不正确,因为我无法在尝试添加多组强类型元素时获得正确的语法。例如,我有以下定义:

TypeScript

我也试过让let sOptions: [number, string]; sOptions = [1, "Female"],[2, "Male"]; 成为一个数组,但这也不起作用;它没有构建并且表示签名不匹配:

Tuple

是否可以根据元组的let sOptions: [number, string][]; 定义在元组中加载多组数据(1 ... n),或者我是否错误地使用此类型并且会有更优选的方法?

2 个答案:

答案 0 :(得分:4)

您需要将mkdir()实际包装在方括号中:

sOptions

否则,TypeScript中的comma operator let sOptions: [number, string][]; sOptions = [ [1, "Female"], [2, "Male"] ]; 只会评估第二个操作数a,b。这就是你获得签名不匹配的原因。

答案 1 :(得分:2)

类型[number, string]是size-2数组的类型,您可能会将其视为元组。我们称这种类型为YourTuple

由于您希望sOptions包含一大堆内容,因此需要输入Array<YourTuple>类型(也称为YourTuple[])。

然后要将其中的许多内容写入sOptions数组,您需要使用正确的数组语法,并附加一个[ ... ],如下所示:

let sOptions: [number, string][];
sOptions = [ [1, "Female"], [2, "Male"], [3, "Other"] ];

顺便说一下,在TypeScript中对固定大小的数组的支持有点糟糕但是越来越好,所以有时你可能会遇到问题,因为它会忽略你的元组大小为2的事实。

如果这是为了更复杂的事情,您可能需要考虑将元组转换为具有指示组件含义的字段的对象:

interface NumberAndGender {
  number: number;
  gender: string;
}