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

TypeScript v5.5.2中Extract<number,1>返回never而非1,是Bug还是特性?

Extract<number, 1>返回never是特性而非Bug

TypeScript里的Extract<T, U>基于分布式条件类型实现,只有当T是联合类型时,才会拆分联合成员逐个判断是否可赋值给U。

当你传入T = number(单一基础类型)时,会直接判断number extends 1是否成立。由于number是包含所有数值的超类型,1只是它的子类型,这个判断不成立,因此返回never,这完全符合TypeScript的类型设计逻辑,属于特性而非Bug。

如果想得到预期的1,需要让T成为包含1的联合类型,比如:

type A = Extract<1 | number, 1>; // 此时返回1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:30:52