如何不借助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
相关产品推荐
相关产品推荐

