Typescript 枚举生成的 javascript 错误
Error in javascript generated by Typescript enum
我在 Typescript 中定义了以下枚举:
enum ColorType {
None = 0,
Default = 1,
RGB = 2,
ColorSet = 3,
Custom = 4
}
这编译为以下 javascript:
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType || (ColorType = {}));
这看起来是正确的并且与 Tristate enum in the documentation 相似。然而,当我 运行 浏览器中的代码时,Firefox 和 Chrome 都抱怨 ColorType
没有在枚举定义的最后一行定义(即 (ColorType || (ColorType = {}))
)。我认为这是第一个。当我手动编辑代码为:
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType = {});
它在 Firefox 和 Chrome 中都工作正常。
我不明白为什么 Typescript 生成的代码会产生错误,看起来他们试图传入一个已经存在的 ColorType
变量,或者如果它不存在则创建一个空对象.但如果错了,这是Typescript编译器的错误吗?我正在使用 TSC 1.7.40.24720。
听起来您只是在剪切和粘贴输出的 部分 ?
编译器为枚举生成此代码:
var ColorType; // <---- this is the line you're missing
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType || (ColorType = {}));
如果您跳过 var
,您将遇到您所描述的错误。
我在 Typescript 中定义了以下枚举:
enum ColorType {
None = 0,
Default = 1,
RGB = 2,
ColorSet = 3,
Custom = 4
}
这编译为以下 javascript:
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType || (ColorType = {}));
这看起来是正确的并且与 Tristate enum in the documentation 相似。然而,当我 运行 浏览器中的代码时,Firefox 和 Chrome 都抱怨 ColorType
没有在枚举定义的最后一行定义(即 (ColorType || (ColorType = {}))
)。我认为这是第一个。当我手动编辑代码为:
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType = {});
它在 Firefox 和 Chrome 中都工作正常。
我不明白为什么 Typescript 生成的代码会产生错误,看起来他们试图传入一个已经存在的 ColorType
变量,或者如果它不存在则创建一个空对象.但如果错了,这是Typescript编译器的错误吗?我正在使用 TSC 1.7.40.24720。
听起来您只是在剪切和粘贴输出的 部分 ?
编译器为枚举生成此代码:
var ColorType; // <---- this is the line you're missing
(function (ColorType) {
ColorType[ColorType["None"] = 0] = "None";
ColorType[ColorType["Default"] = 1] = "Default";
ColorType[ColorType["RGB"] = 2] = "RGB";
ColorType[ColorType["ColorSet"] = 3] = "ColorSet";
ColorType[ColorType["Custom"] = 4] = "Custom";
})(ColorType || (ColorType = {}));
如果您跳过 var
,您将遇到您所描述的错误。