簡體   English   中英

Typescript - 類型中缺少屬性“0”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM