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

如何从TypeScript联合类型创建非混合数组类型?

实现TypeScript联合类型转非混合数组工具类型

要实现将联合类型转换为各成员单独的数组类型联合(而非混合数组),可以利用TypeScript的分布式条件类型特性,它会自动对联合类型的每个成员单独处理:

type ToArray<T> = T extends unknown ? T[] : never;

原理说明

当传入的T是联合类型时,条件类型会遍历联合中的每一个成员,分别执行T[]转换,最终将所有结果重新合并为新的联合类型。比如对于string | number:

  • 先处理string:string extends unknown ? string[] : never → string[]
  • 再处理number:number extends unknown ? number[] : never → number[]
  • 最终得到string[] | number[]

示例验证

type MyType = string | number;
type ArrayOfMyType = ToArray<MyType>; // 类型为 string[] | number[],而非 (string | number)[]

如果直接写type ToArray<T> = T[],得到的会是混合数组类型(string | number)[],这显然不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:03:14