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

如何编写TypeScript工具类型将接口键转为数组类型?

将TypeScript接口的键转换为固定元组类型

要把Student接口的键转换为指定的字面量元组类型,可以通过keyof操作符结合自定义工具类型实现:

实现代码

interface Student {
  name: string;
  id: number;
  gender: string;
}

// 自定义工具类型:将联合类型转换为元组
type UnionToTuple<T> = (T extends any ? (x: T) => void : never) extends (x: infer U) => void
  ? [...UnionToTuple<Exclude<T, U>>, U]
  : [];

// 生成目标元组类型
type Arr = UnionToTuple<keyof Student>; // 类型为 ['name', 'id', 'gender']

说明

  1. keyof Student会获取接口所有键的联合类型:"name" | "id" | "gender"
  2. UnionToTuple工具类型通过条件推断和递归,将联合类型拆解为按接口声明顺序排列的元组(TypeScript 4.1+版本会保留接口键的声明顺序)

如果你只需要包含所有键的数组类型(而非固定长度的元组),可以直接简化为:

type Arr = (keyof Student)[]; // 类型为 ("name" | "id" | "gender")[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:55:25