我正在尝试构造一个长度为2的数组,但是我得到了一个打字稿错误:
[ts] Tuple type '[string]' with length '1' cannot be assigned
to tuple with length '2'.
let output = {status: false};
if(execute.permission) {
let message: [string] = execute.params;
if(message.length >= 2) {
// Destructuring follows
[output['position'], output['message']] = message;
}
}
如何告诉打字稿,数组的长度可能是2?
答案 0 :(得分:5)
使用if (componentType == CHANGE_ORDER_TYPE) {
if (!this.props.data) {
return null;
} else {
const changeList = this.props.data.map(function (result) {
return (result.change_orders);
});
let changeOrdersArr = [];
for (let i = 0; i < changeList.length; i++) {
let inner = changeList[i];
for (let z = 0; z < inner.length; z++) {
changeOrdersArr.push(inner[z])
}
}
(任意长度的数组)代替string[]
("tuple"限制为长度1)作为您的类型。
元组具有特定长度,可以更轻松地表示分配给特定索引位置的多个类型,例如[string]
。同源(单一类型)元组在某些情况下仍然有用(例如在地图中表示对),但不常见。
数组是可变长度的列表,但设计为仅保存单个类型的引用(即使该类型是联合类型或[string, number]
)。如果任何数组的一个索引可以保持某个值,则每个索引都可以保存相同类型的值。
<小时/>
any
答案 1 :(得分:4)
您尚未将message
声明为数组;您已将其声明为元组([string]
),元组具有固定数量的元素。 (请参阅Basic Types文档中的元组部分。)
你可以将它声明为一个有两个字符串元素([string, string]
)的元组,但是考虑到你正在测试message.length >= 2
,你似乎有意将它声明为一个字符串数组({{1 }}):
string[]
答案 2 :(得分:0)
尝试更改message
变量的类型。字符串数组比单字符串数组
let message: string[] = execute.params;