如何获取包含静态成员的类的值类型?
获取静态类成员值的联合类型
假设我有如下静态类:
class StaticClass { static readonly HELLO = 1 static readonly WORLD = 2 }
我需要把这个静态类的成员值提取出来作为类型,得到如下结果:
type ValueOfStaticClassMember = 1 | 2;
可以通过typeof操作符结合索引类型实现这个需求,核心逻辑是先获取类的静态类型,再提取该类型下所有值的联合类型:
分步实现
// 先获取StaticClass的静态类型,包含所有静态成员的类型信息 type StaticClassStaticType = typeof StaticClass; // 提取所有静态成员值的联合类型 type ValueOfStaticClassMember = StaticClassStaticType[keyof StaticClassStaticType];
简化写法
也可以合并为一行代码:
type ValueOfStaticClassMember = (typeof StaticClass)[keyof typeof StaticClass];
注意事项
这种方式仅适用于静态成员是字面量常量的场景,如果静态成员的类型是宽泛的(比如直接声明为number而非具体数值),那么得到的类型也会是宽泛的number,而非具体的数值联合。
内容的提问来源于stack exchange,提问作者ertucode
相关产品推荐
相关产品推荐

