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

如何不使用双重三元表达式检测Array<any>类型

检测类型是否为Array<any>的简化条件类型写法

核心需求是精准判断一个类型是否为**Array<any>**(而非Array<string>、number[]这类其他数组类型)。可以通过同时验证T extends Array<any>和Array<any> extends T两个条件实现,无需嵌套三元表达式的写法如下:

type IsAnyArray<T> = [T, Array<any>] extends [Array<any>, T] ? T : 'not any array';

写法说明

通过元组包裹两个类型,利用TypeScript条件类型的匹配规则,只有当元组的每个对应位置都满足extends关系时,整个表达式才会返回true。这相当于同时完成了双向类型校验:

  1. 第一个位置校验T extends Array<any>
  2. 第二个位置校验Array<any> extends T

只有当两个条件都成立(即T就是Array<any>)时,才会返回T,否则返回'not any array'。

测试示例

// 结果为 Array<any>
type Test1 = IsAnyArray<Array<any>>;

// 结果为 'not any array'
type Test2 = IsAnyArray<Array<string>>;

// 结果为 'not any array'
type Test3 = IsAnyArray<number[]>;

// 结果为 'not any array'
type Test4 = IsAnyArray<string>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:08