有誰知道為什么根據 VSCode 會發生這種情況?
interface Point {
x: number;
y: number;
}
let grid: [key: number, value: [key: number, value: Point]];
// ...
// Gives an object of type number | [key: number, value: Point]
var col = grid[-5];
// Gives an object of type number | Point
var pnt = (col as [key: number, value: Point])[-2];
請問有人可以解釋一下嗎?
我希望他們沒有 number |
uj5u.com熱心網友回復:
這個:
let grid: [key: number, value: [key: number, value: Point]];
宣告一個元組型別:一個有 2 個成員的陣列,其中第一個是 type number,第二個是另一個元組,例如:
[3, [4, somePoint]]
使用物件而不是陣列,以便grid[someNum]為您提供一列:
let grid: {
[key: number]: {
[key: number]: Point;
};
}
您也可以考慮使用 Map 而不是動態屬性名稱(Map 更適合此類事情,并且您偶爾會遇到 TypeScript 中此類動態屬性名稱的問題)
type Col = Map<number, Point>;
const grid = new Map<number, Col>();
uj5u.com熱心網友回復:
變數let grid在這里被初始化:
let grid: [key: number, value: [key: number, value: Point]];
這里'key'被設定為一個數字。如果不希望它回傳這部分,則需要去掉該key: number部分代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343887.html
上一篇:打字稿`super`實作不提供值
下一篇:打字稿不警告可能未定義的陣列?
