【发布时间】:2018-01-01 22:20:26
【问题描述】:
我有一个全局包含多个常量的环境:
TOP = 1
TOP_RIGHT = 2
RIGHT = 3
BOTTOM_RIGHT = 4
BOTTOM = 5
BOTTOM_LEFT = 6
LEFT = 7
TOP_LEFT = 8
我很清楚,这 8 个常量不仅仅是任意常量,实际上是一组方向。因此,我想让它们成为DIRECTION 类型,这样我就可以做这样的事情:
let test: DIRECTION = TOP_LEFT;
enum 类型似乎是实现这一点最合乎逻辑的方式,但我遇到了以下问题:
我之前尝试过实现这种行为,但遇到了一些困难。
src/main.ts(1,23): error TS2304: Cannot find name 'TOP_LEFT'.
打字稿文件:
main.ts:
let test: DIRECTION = TOP_LEFT;
console.log(test);
direction.d.ts:
declare enum DIRECTION {
TOP = 1,
TOP_RIGHT = 2,
RIGHT = 3,
BOTTOM_RIGHT = 4,
BOTTOM = 5,
BOTTOM_LEFT = 6,
LEFT = 7,
TOP_LEFT = 8,
}
忽略编译错误,运行“tsc”(也称为转译代码)的 JavaScript 结果看起来它将访问预定义的全局属性:
let test = TOP_LEFT;
console.log(test);
如何以对 TypeScript 友好的方式获得这样的输出?
【问题讨论】:
标签: javascript typescript enums