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

Typescript如何提取interface中值类型为string的键组成新类型

实现方案

你可以通过 TypeScript 自带的条件类型+映射类型能力实现需求,还可以封装成通用工具类型复用:

1. 定义通用筛选工具类型

// 泛型 T 是源接口/类型,U 是要匹配的值类型
type KeysOfType<T, U> = {
  [K in keyof T]: T[K] extends U ? K : never
}[keyof T]

2. 直接使用得到目标类型

type MyType = KeysOfType<MyInterface, string>
// 此时 MyType 自动推导为:'val1' | 'val2' | 'val4',完全符合预期

原理解释

  • 先遍历源类型的所有键,对每个键做类型判断:如果该键对应的值类型符合目标类型,就保留键名,否则返回never
  • 最后取所有属性值的联合类型,never会在联合类型计算时自动被剔除,最终剩下的就是所有值类型匹配的键

验证示例

const validKey: MyType = 'val2' // 类型校验正常通过
const invalidKey: MyType = 'val3' // 类型报错,val3对应的值类型是number,不在允许范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:00