Javascript 获取Typescript中命名空间的所有值?
节点版本:6.11.3 打字稿版本:2.1.6 在我们的项目中,我们有一组枚举,它们主要如下所示:Javascript 获取Typescript中命名空间的所有值?,javascript,typescript,enums,Javascript,Typescript,Enums,节点版本:6.11.3 打字稿版本:2.1.6 在我们的项目中,我们有一组枚举,它们主要如下所示: export type ThingType = "thing1" | "thing2"; export namespace ThingType { export const THING_ONE = "thing1"; export const THING_TWO = "thing2"; } const enums = { thingType: ThingType,
export type ThingType = "thing1" | "thing2";
export namespace ThingType {
export const THING_ONE = "thing1";
export const THING_TWO = "thing2";
}
const enums = {
thingType: ThingType,
...
}
我想在端点中为需要这些字符串值的端点的使用者公开这些值。所以我做了一个端点,看起来像这样:
export type ThingType = "thing1" | "thing2";
export namespace ThingType {
export const THING_ONE = "thing1";
export const THING_TWO = "thing2";
}
const enums = {
thingType: ThingType,
...
}
返回的json如下所示:
"data": {
"thingType": {
"THING_ONE": "thing1",
"THING_TWO": "thing2"
}
}
我希望它的输出如下:
"data": {
"thingType": ["thing1", "thing2"]
}
对于一个普通的javascript对象,这将是相当容易的,我只需要在端点中的ThingType末尾添加值。但是TS中的名称空间或枚举上不存在值。我在中没有找到任何内容,但我觉得应该有一些东西可以让我轻松获取枚举值 名称空间被编译成普通的JavaCScript对象,因此在支持Object.Value的环境中可以正常工作。当然:
export type ThingType = "thing1" | "thing2";
export namespace ThingType {
export const THING_ONE = "thing1";
export const THING_TWO = "thing2";
}
const enums = {
thingType: Object.values(ThingType)
}
console.(enums);
显示
如果Object.values不可用,它会变得更详细一些:
const enums = {
thingType: Object.keys(ThingType).map(k => ThingType[k])
}
名称空间被编译成普通的JavaCScript对象,因此在支持Object.values的环境中可以正常工作。当然:
export type ThingType = "thing1" | "thing2";
export namespace ThingType {
export const THING_ONE = "thing1";
export const THING_TWO = "thing2";
}
const enums = {
thingType: Object.values(ThingType)
}
console.(enums);
显示
如果Object.values不可用,它会变得更详细一些:
const enums = {
thingType: Object.keys(ThingType).map(k => ThingType[k])
}
什么版本的ts?我得到一个错误,说类型ObjectConstructor上不存在值:/ah,shoot,看起来像它的node7+,我们现在在节点6@MikeManfrin-对象的简单解决方法。值不可用:是的-但这需要每个值都有一个映射;这并不可怕,只是没有我想要的那么简洁。根据中的建议,我正在使用lodash,但很遗憾,没有任何本地语言可以处理它。如果有人对ts有更深入的了解,可能会指出ts本身的某些部分可以做到这一点,我将把问题留待一旁。什么版本的ts?我得到一个错误,说类型ObjectConstructor上不存在值:/ah,shoot,看起来像它的node7+,我们现在在节点6@MikeManfrin-对象的简单解决方法。值不可用:是的-但这需要每个值都有一个映射;这并不可怕,只是没有我想要的那么简洁。根据中的建议,我正在使用lodash,但很遗憾,没有任何本地语言可以处理它。我将把这个问题留给其他人,以防有人对ts有更深入的了解,可能会指出ts本身的某些部分可以做到这一点。