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

TypeScript中如何解引用数组类型获取单元素类型并实现ArrayDeref

实现方案

你可以通过TypeScript的条件类型+infer关键字实现ArrayDeref泛型,代码如下:

type ArrayDeref<T> = T extends (infer U)[] ? U : never;

逻辑说明

  • 该泛型通过条件类型判断入参T是否为数组类型
  • 如果是数组类型,就通过infer关键字推断数组元素的类型为U,直接返回U
  • 如果入参不是数组类型,返回never类型做容错

使用示例

type A = string[]
type ASingular = ArrayDeref<A>
// ASingular 的类型等价于 string

拓展兼容

如果需要支持readonly只读数组,可以调整泛型实现:

type ArrayDeref<T> = T extends readonly (infer U)[] ? U : never;

简化写法

你也可以利用数组的索引签名实现相同效果,该写法要求入参必须为数组类型:

type ArrayDeref<T extends any[]> = T[number]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:04