Javascript 获取Typescript中命名空间的所有值?

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,

节点版本: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,
    ...
}
返回的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本身的某些部分可以做到这一点。