You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:32:45