Я определил следующее перечисление в 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 = {}));
Это выглядит правильно и похоже на трехстороннее перечисление в документация. Однако, когда я запускаю код в браузере, и 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.