【发布时间】:2023-03-19 07:09:01
【问题描述】:
在下面的代码中,
function f([first, second]: [number, number]){
console.log(first);
console.log(second);
}
var input:number[] = [1,2];
f(input);
number[] 类型变量(input) 被传递给f。
为什么会出现编译错误? Argument of type 'number[]' is not assignable to parameter of type '[number, number]'.
Type 'number[]' is missing the following properties from type '[number, number]': 0, 1ts(2345)
【问题讨论】:
-
除了
[number, number],[1, 2]还能是什么? -
@Cerbrus 不能是
number[]吗?我们在 C、Java 中做到了这一点...... -
@Cerbrus A
number[]数组显然 -
问题是“为什么要编译/类型检查?”,而不是“这是如何工作的?”,对吧?
-
[number, number](由两个数字成员组成的数组)比number[](由 x 个数字成员组成的数组)更具体,这就是 TypeScript 会抛出的原因编译错误。如果您反转类型声明并使用var input: [number, number]和f([first, second]: number[]),它将起作用。
标签: arrays typescript ecmascript-6 tuples destructuring