TypeScript中如何将number | number[]类型转换为number[]类型
TypeScript 联合类型转数组解决方案
你可以通过 Array.isArray() 方法实现类型判断和自动类型收窄,无需额外类型断言即可满足转换需求:
最简写法
let v1: number | number[]; const v2: number[] = Array.isArray(v1) ? v1 : [v1];
可复用工具函数写法
如果需要多次使用该逻辑,可以封装为通用工具函数:
function coerceToArray(input: number | number[]): number[] { if (Array.isArray(input)) { return input; } return [input]; } // 测试用例 const test1 = coerceToArray(5); // 类型为 number[],值为 [5] const test2 = coerceToArray([1, 3, 5]); // 类型为 number[],值为 [1,3,5]
说明
- TypeScript 原生对
Array.isArray()做了类型收窄支持,代码全程类型安全,无编译报错。 - 数组场景直接返回原数组引用,单值场景返回新数组,无冗余性能损耗。
内容的提问来源于stack exchange,提问作者cuongle
相关产品推荐
相关产品推荐

