在打字稿声明文件(directions.d.ts)中,到目前为止我有以下代码:
interface DIRECTION {}
declare const TOP: DIRECTION;
declare const TOP_RIGHT: DIRECTION;
declare const RIGHT: DIRECTION;
declare const BOTTOM_RIGHT: DIRECTION;
declare const BOTTOM: DIRECTION;
declare const BOTTOM_LEFT: DIRECTION;
declare const LEFT: DIRECTION;
declare const TOP_LEFT: DIRECTION;
declare const MOVE_COST:{
[index: DIRECTION]: number
}
我的目标是能够以类型敏感的方式使用MOVE_COST(例如)
console.log(MOVE_COST[TOP]) // This is valid.
console.log(MOVE_COST[BOTTOM]) // This is valid.
console.log(MOVE_COST[3]) // This should be an error.
现在,最后,这些常量(例如TOP,BOTTOM等)都被定义为执行环境中的整数,因此用它们索引MOVE_COST数组是完全有效的。
但是,打字稿总是抛出
error TS1023: An index signature parameter type must be 'string' or 'number'.
我应该如何声明MOVE_COST
以便按照我希望的方式访问它?
答案 0 :(得分:2)