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

TypeScript中能否将联合类型映射为接口?

把联合类型映射为布尔属性接口的TypeScript实现

嘿,这事儿在TypeScript里用映射类型就能轻松搞定!我给你两种常用的实现方式,都能完美满足你的需求:

方式一:使用内置Record工具类型

Record是TypeScript提供的内置工具类型,专门用来创建“键来自某个联合类型、值类型统一”的对象类型,刚好匹配你的场景:

type A = 'one' | 'two' | 'three';
type B = Record<A, boolean>;

这样定义后,B就完全等价于你想要的interface B { one: boolean; two: boolean; three: boolean; }。

方式二:手动编写映射类型

如果你想更直观地看到映射的底层逻辑,可以手动写映射类型,这其实就是Record的实现原理:

type A = 'one' | 'two' | 'three';
type B = {
  [K in A]: boolean;
};

这里的[K in A]表示遍历联合类型A中的每一个成员,把它们依次作为接口的属性名,每个属性的类型都设为boolean。

验证一下

你可以声明一个符合B类型的对象来验证效果:

const validObj: B = {
  one: true,
  two: false,
  three: true
};
// 如果少写某个属性或者属性类型不对,TS会直接报错哦

两种方式都能达到你要的效果,选哪种看你的习惯——追求简洁就用Record,想明确展示映射逻辑就手动写映射类型~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:17:40