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

如何不借助number_类型定义含联合类型剩余元素的TypeScript元组?

问题

以下写法是可行的:

type number_ = number | null;

let myTuple: [string, ...number_[]];

myTuple = ['foo', 1, 2, 3];
myTuple = ['foo', 1, null, 3];

const [a, ...b] = myTuple;
// 类型检查器可识别a为string类型,b为number | null类型数组

提问:是否存在无需使用number_类型即可实现上述效果的写法?

回答

当然可以,直接把number | null联合类型嵌入到剩余元素的数组类型定义中即可,无需额外声明类型别名:

let myTuple: [string, ...(number | null)[]];

myTuple = ['foo', 1, 2, 3];
myTuple = ['foo', 1, null, 3];

const [a, ...b] = myTuple;
// 类型检查器依然能正确识别a为string类型,b为number | null类型数组

这种写法和原代码的类型效果完全一致,省去了额外的类型别名,代码更简洁直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:02:01