javascript - 在命名空间中迭代没有其静态函数的枚举
问题描述
在 Typescript 2.4+ 中,您可以使用相同的名称声明枚举类型和命名空间。在命名空间中,您可以编写静态函数。
export enum Foo {
...
}
export namespace Foo {
export const getAllEnumTypes = (): Foo[] => {
return Object.keys(Foo)
.map((key) => Foo[key]));
};
所以上面的代码语句返回 Foo 枚举的所有成员,也返回作为成员的getAllEnumTypes()
函数。我们如何防止这种情况发生?
解决方案
您可以使用运算符过滤掉所有函数typeof
:
return Object.keys(Foo)
.map((key) => Foo[key])
.filter((value) => typeof value !== 'function'));
推荐阅读
- python - Python - 在标签中加载图像
- php - Laravel 修补文本建议或通过 Tab 键自动完成
- reactjs - 如何处理组件渲染后出现axios响应的情况?
- javascript - 如何使服务器/srr 仅呈现为 vue 组件?
- java - 将记录删除到表中并获取删除的行数
- java - 无法通过在方法 FindById() 中使用主键来获取单个对象
- c - 使用 strcpy 和相等字符串的地址有什么区别?
- jquery - ASP NET MVC CORE - 每 X 秒刷新一次局部视图
- python - 按下 CTRL+C 时如何防止 ^C 显示
- javascript - 尝试使用 JQuery 为框的颜色设置动画