如何创建枚举模块?
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 为枚举生成对象,例如:
var Test;
(function (Test) {
Test[Test["a"] = 0] = "a";
Test[Test["b"] = 1] = "b";
Test[Test["c"] = 2] = "c";
})(Test || (Test = {}));
因此您需要向该对象添加新属性:
const enumObject: any = Test;
enumObject[enumObject["d"] = 3] = "d";
enumObject[enumObject["e"] = 4] = "e";
enumObject[enumObject["f"] = 5] = "f";
我正在尝试向现有枚举添加编译时值。
基地在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 为枚举生成对象,例如:
var Test;
(function (Test) {
Test[Test["a"] = 0] = "a";
Test[Test["b"] = 1] = "b";
Test[Test["c"] = 2] = "c";
})(Test || (Test = {}));
因此您需要向该对象添加新属性:
const enumObject: any = Test;
enumObject[enumObject["d"] = 3] = "d";
enumObject[enumObject["e"] = 4] = "e";
enumObject[enumObject["f"] = 5] = "f";