[英]How do you create a module of an enum?
我正在尝试将编译时值添加到现有枚举。 基础在src/abc.ts
export enum Test {
a,
b,
c
}
并且模块在src/def.ts
import { Test } from "./abc";
declare module "./abc" {
export enum Test {
d = 3,
e = 4,
f
}
}
现在我正在尝试在src/index.ts
中记录Test
枚举
import { Test } from "./abc";
import "./def";
console.log(Test);
编辑器的自动完成找到三个附加枚举值(在自动完成列表中建议它们)
但是当你运行脚本时,只有默认的
Object {…}
0: "a"
1: "b"
2: "c"
a: 0
b: 1
c: 2
记录值! d
, e
, f
丢失。
我错过了什么?
您只修改类型定义,但不修改值。 Typescript 为枚举生成 object,类似于:
var Test;
(function (Test) {
Test[Test["a"] = 0] = "a";
Test[Test["b"] = 1] = "b";
Test[Test["c"] = 2] = "c";
})(Test || (Test = {}));
因此,您需要将新属性添加到此 object:
const enumObject: any = Test;
enumObject[enumObject["d"] = 3] = "d";
enumObject[enumObject["e"] = 4] = "e";
enumObject[enumObject["f"] = 5] = "f";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.