我有以下几点...
enum NubDirection {
OUTWARD,
INWARD
}
...
direction : NubDirection;
...
let index = Math.floor(Math.random() * 2) + 1;
nub.direction = NubDirection[index];
但是这个
错误TS2322:类型"string"不可分配给类型"NubDirection".
我有以下几点...
enum NubDirection {
OUTWARD,
INWARD
}
...
direction : NubDirection;
...
let index = Math.floor(Math.random() * 2) + 1;
nub.direction = NubDirection[index];
但是这个
错误TS2322:类型"string"不可分配给类型"NubDirection".
当你声明某个东西是NubDirection
型时,它实际上是一个数字:
var a = NubDirection.INWARD;
console.log(a === 1); // true
使用序号访问枚举时,返回的是字符串而不是数字,因此无法将其分配给声明为NubDirection
的对象.
你可以做:
nub.direction = NubDirection[NubDirection[index]];
原因是javascript中没有enum,typescript模仿enum的方式是在将其编译为js时这样做的:
var NubDirection;
(function (NubDirection) {
NubDirection[NubDirection["OUTWARD"] = 0] = "OUTWARD";
NubDirection[NubDirection["INWARD"] = 1] = "INWARD";
})(NubDirection || (NubDirection = {}));
所以你最终得到了这个物体:
NubDirection[0] = "OUTWARD";
NubDirection[1] = "INWARD";
NubDirection["OUTWARD"] = 0;
NubDirection["INWARD"] = 1;