如何提取接口中所有类型并生成其联合类型?
提取Interface所有属性类型组成联合类型的方法
当然可以实现,在TypeScript里用索引类型查询就能轻松做到。
针对你给出的示例:
原Interface定义:
interface T { a: TypeA; b: TypeB; c: TypeC; }
只需要一行代码就能生成目标联合类型:
type U = T[keyof T];
这里的原理是:
keyof T会返回该Interface所有属性名组成的联合类型,也就是"a" | "b" | "c"- 用
T[keyof T]索引访问每个属性对应的类型,TypeScript会自动将这些类型合并成TypeA | TypeB | TypeC的联合类型
如果你的Interface包含可选属性,生成的联合类型会自动包含undefined(比如属性a?: TypeA的话,U会包含TypeA | undefined),如果需要排除undefined,可以结合Exclude工具类型:
type U = Exclude<T[keyof T], undefined>;
内容的提问来源于stack exchange,提问作者John Z
相关产品推荐
相关产品推荐

