我把一个很大的JS项目翻译成TS项目,并注意到了一些事情。例如,我有一个模块,如下所示:
WinConstants.ts
export = {
"no_win":0,
"win":1,
"big_win":2,
"mega_win":3
}我想让它保持不变,所以我就这样限制它:
WinConstants.ts
class WinConstants{
readonly no_win:0;
readonly win:1;
readonly big_win:2;
readonly mega_win:3;
}
export = new WinConstants();挺酷的是吧?完成它,现在去翻译下一个模块。对吗?还没那么快。我忘了用":"s代替"=",而TypeScript 并没有警告我,。现在所有的值都是undefined。它可能会被雷达监视直到我在运行时看到它..。欢迎回到JS的不确定性!当你依赖编译器的错误时,把东西翻译成TS的全部意义就是取消了它自己.如果没有文字类型,这种情况就不会发生,因为在这种情况下,文字数字不会是类型。
那该怎么办呢?别误会我,我喜欢文字类型,它们很有帮助,但语法现在对我不利。不仅当我翻译时,而且当我写一些东西,不小心把:写成JSON风格而不是=符号时,这类事情可能都会被忽略。
有什么想法吗?
发布于 2017-03-30 12:48:42
您的第一种方法和第二种方法都不是很好,因为您正在导出一个常量对象或一个类的实例。
为此,您应该使用enum (更多信息)。
export enum WinConstants {
NO_WIN = 0,
WIN = 1,
BIG_WIN = 2,
MEGA_WIN = 3
}https://stackoverflow.com/questions/43117606
复制相似问题