[英]Typescript - property '0' is missing in type
我不明白这个错误是什么意思。 我正在尝试声明一个包含两个数字的 arrays 的数组。 例如,
[[1, 2], [4, 3], [5, 6]]
这些是我正在使用的类型签名。
const knightTour = (start: number[], size: number): void => {
const [i, j] = start;
let path: number[][] = [];
const queue: Array<[number[]]> = [start];
}
但是,当我尝试初始化队列变量时,我遇到了上述错误。 我究竟做错了什么?
完整的错误信息是:
(parameter) start: number[] Property '0' is missing in type 'number[]' but required in type '[number[]]'.(2741)
它揭示了错误在哪里。
const queue: Array<[number[]]> = [start];
queue
的类型是[number[]]
数组(arrays 数字数组的 arrays 数组),您想用数字数组 arrays 对其进行初始化。
我怀疑queue
的类型不正确,应该是Array<number[]>
。
要添加到@axiac 的答案:
类型:
[number[]]
是一个匹配大小为 1 的 arrays 的元组类型,其唯一元素的类型为number[]
。
因此,该类型的有效值为:
[[1, 2, 3]]
[[77, 33]]
[[]]
etc。 很明显[number[]]
不是一个有用的类型。 如果元组中至少有两个元素,我认为元组类型是有意义的。 例如这种类型:
[string, number, number[]]
可用于存储字符串、数字和数字数组(如果应用程序需要这样的记录)。
['one', 1, [1]]
['six', 6, [1, 2, 3, 6]]
['ten', 10, [1, 2, 5, 10]]
在您的情况下,很明显这只是一个简单的错误。 意图似乎是queue
应该是 arrays 的数组。 所以queue
的类型可以是:
number[][]
及其定义和初始化:
const queue: number[][] = [start];
要不就:
const queue = [start];
并让 TypeScript 推断number[][]
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.