我有[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),或者我是否错误地使用此类型并且会有更优选的方法?
答案 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;
}