【发布时间】:2019-09-30 04:50:52
【问题描述】:
谁能帮我理解为什么我会收到以下代码的类型错误:
function sumOfTwoNumbersInArray(a: [number, number]) {
return a[0] + a[1];
}
sumOfTwoNumbersInArray([1, 2]); // Works
let foo = [1, 2];
sumOfTwoNumbersInArray(foo); // Error
错误是:
'number[]' 类型的参数不能分配给'[number, number]' 类型的参数。
类型“number[]”缺少类型“[number, number]”的以下属性:0、1
【问题讨论】:
-
参数类型是一个元组,而
foo是一个数字数组。编译器会确保安全并分配限制最少的类型。将一个传递给另一个会产生此错误。如果foo是一个元组,你应该明确输入:let foo: [number, number] = [1,2];
标签: typescript