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

如何通过TypeScript接口属性获取联合类型并定义变量类型?

当然有可行的实现方法!TypeScript的索引类型查询正好能解决这个需求,不需要手动写死number | string,还能自动适配接口的后续修改。

直接用Inter[keyof Inter]就能获取到接口所有属性值的联合类型,具体代码如下:

interface Inter { a: number; b: string; }
// 这里的类型会自动推导为 number | string
let variable: Inter[keyof Inter];

简单解释一下原理:

  • keyof Inter会生成接口所有键名的联合类型,也就是 "a" | "b"
  • 用这个键名联合类型去索引Inter,就会得到对应属性值的联合类型,也就是Inter["a"] | Inter["b"],最终就是number | string

如果之后你给Inter新增属性(比如c: boolean),variable的类型会自动更新为number | string | boolean,非常灵活。

如果你需要在多个地方复用这个逻辑,还可以自定义一个通用工具类型:

// 通用工具类型:获取对象/接口所有属性值的联合类型
type Values<T> = T[keyof T];

interface Inter { a: number; b: string; }
let variable: Values<Inter>; // 同样得到 number | string

这样不管是哪个接口,都能用Values<YourInterface>快速获取属性值的联合类型~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:26:36