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

如何在TypeScript中获取Map类型定义的键与值类型

在TypeScript中获取Map类型的键与值类型

当然可以,你可以利用TypeScript的条件类型推断(infer关键字)来提取Map类型的键类型和值类型。

方法一:定义通用工具类型

先封装可复用的工具类型,方便多次使用:

// 提取Map的键类型
type MapKeyType<T extends Map<any, any>> = T extends Map<infer K, any> ? K : never;

// 提取Map的值类型
type MapValueType<T extends Map<any, any>> = T extends Map<any, infer V> ? V : never;

然后针对你的示例类型Foo使用这些工具类型:

type Foo = Map<string, number>;

// 获取键类型,结果为string
type FooKey = MapKeyType<Foo>;
// 获取值类型,结果为number
type FooValue = MapValueType<Foo>;

方法二:直接内联推断

如果不需要复用工具类型,也可以直接在类型定义中进行推断:

type Foo = Map<string, number>;

type FooKey = Foo extends Map<infer K, any> ? K : never; // string
type FooValue = Foo extends Map<any, infer V> ? V : never; // number

原理说明

infer关键字允许我们在条件类型中声明一个待推断的类型变量,当传入的类型匹配Map<K, V>的结构时,TypeScript会自动将对应的键类型赋值给K,值类型赋值给V,最终返回推断出的类型。

内容的提问来源于stack exchange,提问作者LoyalPotato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:40:31