打字稿注释问题:具有键值的数组
Typescript annotation question: arrays with key values
有谁知道 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 |
这里正在初始化变量 let grid
:
let grid: [key: number, value: [key: number, value: Point]];
这里 'key' 被设置为一个数字。如果不想return这部分,需要去掉key: number
部分代码
这个:
let grid: [key: number, value: [key: number, value: Point]];
声明一个元组类型:一个有2个成员的数组,其中第一个是number
类型,第二个是另一个元组,例如:
[3, [4, somePoint]]
使用对象而不是数组,这样 grid[someNum]
就会得到一列:
let grid: {
[key: number]: {
[key: number]: Point;
};
}
您也可以考虑使用地图而不是动态 属性 名称(地图更适合这类事情,您偶尔会 运行 遇到此类动态 属性 TypeScript 中的名称)
type Col = Map<number, Point>;
const grid = new Map<number, Col>();
有谁知道 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 |
这里正在初始化变量 let grid
:
let grid: [key: number, value: [key: number, value: Point]];
这里 'key' 被设置为一个数字。如果不想return这部分,需要去掉key: number
部分代码
这个:
let grid: [key: number, value: [key: number, value: Point]];
声明一个元组类型:一个有2个成员的数组,其中第一个是number
类型,第二个是另一个元组,例如:
[3, [4, somePoint]]
使用对象而不是数组,这样 grid[someNum]
就会得到一列:
let grid: {
[key: number]: {
[key: number]: Point;
};
}
您也可以考虑使用地图而不是动态 属性 名称(地图更适合这类事情,您偶尔会 运行 遇到此类动态 属性 TypeScript 中的名称)
type Col = Map<number, Point>;
const grid = new Map<number, Col>();