遍历没有名称空间中静态功能的枚举

时间:2019-05-30 14:55:54

标签: javascript typescript enums namespaces

在Typescript 2.4+中,您可以使用相同的名称声明一个枚举类型和名称空间。在命名空间中,您可以编写静态函数。

export enum Foo {
 ...
}

export namespace Foo {
 export const getAllEnumTypes = (): Foo[] => {
   return Object.keys(Foo)
      .map((key) => Foo[key]));
};

因此,以上代码语句返回Foo枚举的所有成员,还返回getAllEnumTypes()函数作为成员。我们如何防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

您可以使用typeof运算符过滤掉所有功能:

return Object.keys(Foo)
      .map((key) => Foo[key])
      .filter((value) => typeof value !== 'function'));