TypeScript中如何让编辑器显示泛型工具类型的最终计算结果?
如何让TypeScript编辑器展示泛型工具类型的最终计算结果?
TypeScript编辑器默认会对泛型工具类型的复合形式进行折叠显示,要强制展示最终计算后的类型,可以通过自定义类型展开工具实现:
方法1:基础展开(适用于多数简单场景)
定义一个Prettify工具类型,通过交叉类型触发TypeScript展开类型结构:
import type {GetKeyOf} from "typescript-treasure" interface EmitterMasterEventMap { [p: string]: never; } // 基础类型展开工具 type Prettify<T> = { [K in keyof T]: T[K] } & {}; // 使用Prettify强制展示最终类型 type A = Prettify<GetKeyOf<EmitterMasterEventMap>[]>;
此时在编辑器中 hover A,就能看到它的最终类型(比如如果GetKeyOf<EmitterMasterEventMap>解析为string,则A会显示为string[])。
方法2:递归展开(适用于嵌套复杂类型)
如果你的类型包含多层嵌套的泛型或交叉类型,可以用递归的Expand工具深入展开所有层级:
import type {GetKeyOf} from "typescript-treasure" interface EmitterMasterEventMap { [p: string]: never; } // 递归类型展开工具 type Expand<T> = T extends infer U ? U extends object ? { [K in keyof U]: Expand<U[K]> } : U : T; // 使用Expand展开所有层级的类型 type A = Expand<GetKeyOf<EmitterMasterEventMap>[]>;
这两种方法的核心原理是通过构造新的类型结构,让TypeScript被迫计算并显示最终的类型结果,而不是保留泛型的复合形式。
内容的提问来源于stack exchange,提问作者Autumn
相关产品推荐
相关产品推荐

