Suh*_*pta 2 javascript destructuring typescript ecmascript-6
我试图构造一个长度为2的数组,但我得到一个打字稿错误:
[ts] Tuple type '[string]' with length '1' cannot be assigned
to tuple with length '2'.
Run Code Online (Sandbox Code Playgroud)
let output = {status: false};
if(execute.permission) {
let message: [string] = execute.params;
if(message.length >= 2) {
// Destructuring follows
[output['position'], output['message']] = message;
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么告诉打字稿,这个数组的长度可能是2?
car*_*ant 10
您还没有声明message为数组;您已将其声明为元组 ( [string]),并且元组具有固定数量的元素。(请参阅基本类型文档中的元组部分。)
您可以将其声明为具有两个字符串元素 ( ) 的元组[string, string],但考虑到您正在测试,message.length >= 2您似乎打算将其声明为字符串数组 ( string[]):
let output = {status: false};
if(execute.permission) {
let message: string[] = execute.params;
if(message.length >= 2) {
// Destructuring follows
[output['position'], output['message']] = message;
}
}
Run Code Online (Sandbox Code Playgroud)
使用string[](任何长度的数组)而不是[string]("元组"限制为长度1)作为您的类型.
元组具有特定的长度,并且更容易表示分配给特定索引位置的多个类型,例如[string, number].同源(单一类型)元组在某些情况下仍然有用(例如在地图中表示对),但不常见.
另一方面,数组是可变长度的列表,但设计为仅保存单个类型的引用(即使该类型是联合类型或any).如果任何数组的一个索引可以保存某个值,则每个索引都可以保存相同类型的值.
let execute = { permission: true, params: ['a', 'b']}
let output = { status: false };
if(execute.permission) {
let message: string[] = execute.params;
if(message.length >= 2) {
// Destructuring follows
[output['position'], output['message']] = message;
}
}
console.log(output)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1369 次 |
| 最近记录: |