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

TypeScript中如何定义非空数字数组?编译时拦截空数组赋值

如何在TypeScript中定义非空数字数组

你可以通过元组+剩余元素语法来定义必须至少包含一个数字的数组类型,这样赋值空数组时就会触发编译错误。

具体实现如下:

// 定义非空数字数组类型
type NonEmptyNumberArray = [number, ...number[]];

let array: NonEmptyNumberArray = [123]; // 合法,符合至少一个元素的要求
array = [5, 6]; // 合法,支持多个元素
array = []; // 编译错误:类型 '[]' 不能赋值给类型 'NonEmptyNumberArray'

原理说明

这个类型的核心是利用了TypeScript的元组特性:

  • 元组的第一个位置number强制要求数组必须至少有一个数字元素;
  • 后面的...number[]是剩余元素语法,允许数组在第一个元素之后追加任意数量的额外数字,兼顾了普通数组的灵活性。

如果需要在运行时也确保数组非空(比如处理不确定来源的数据),可以配合类型守卫函数:

function isNonEmptyNumberArray(arr: number[]): arr is NonEmptyNumberArray {
  return arr.length > 0;
}

// 使用示例
const unknownArr: number[] = [];
if (isNonEmptyNumberArray(unknownArr)) {
  // 这里unknownArr的类型会被推断为NonEmptyNumberArray
  console.log(unknownArr[0]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:33:11