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

如何从TypeScript接口中提取数组类型对应的属性键联合类型

你可以通过 TypeScript 的条件类型和映射类型组合实现这个需求,通用实现如下:

第一步:定义提取数组属性键的工具类型

type ExtractArrayKeys<T> = {
  [K in keyof T]: T[K] extends Array<any> ? K : never
}[keyof T]

第二步:传入目标接口使用

// 前置定义
interface SomeInterface {}
interface SomeOtherInterface {}

interface Obj {
  string1: string
  string2: string
  array1: SomeInterface[]
  array2: SomeOtherInterface[]
}

// 最终得到的类型就是 "array1" | "array2"
type TargetUnion = ExtractArrayKeys<Obj>

逻辑说明

  1. 先遍历泛型T的所有属性键,对每个属性做类型判断:如果属性值是数组类型,就把该属性的值设为键名本身,否则设为never
  2. 再通过[keyof T]取出所有属性的值组成联合类型,never类型会在联合类型中自动被剔除,最终剩下的就是所有值为数组的属性键组成的联合类型。

内容的提问来源于stack exchange,提问作者André Krosby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:05