TypeScript中[object]与object[]两种类型定义的区别是什么?
TypeScript中两种数组类型定义的差异分析
这两种类型定义的核心区别在于,一个是固定长度的元组类型,另一个是任意长度的数组类型,具体差异如下:
类型本质不同
type objectArray = [object]是元组类型,明确规定数组长度必须为1,且唯一元素必须是object类型(或其派生类型)。type objectArray = object[]是标准数组类型,表示可包含任意数量object类型元素的数组,长度无限制。
赋值规则不同
- 元组类型
[object]仅接受长度为1的数组:const validTuple: [object] = [{ key: 'value' }]; // 合法 const emptyTuple: [object] = []; // 报错:缺少元组要求的第1个元素 const longTuple: [object] = [{a:1}, {b:2}]; // 报错:元素数量超出元组定义的长度 - 数组类型
object[]可接受任意长度的数组,包括空数组:const emptyArr: object[] = []; // 合法 const singleItemArr: object[] = [{ id: 1 }]; // 合法 const multiItemArr: object[] = [{x:1}, {y:2}]; // 合法
- 元组类型
元素访问与遍历规则不同
- 元组类型
[object]只能通过索引0访问元素,TypeScript会严格限制索引范围,尝试访问索引1会直接报错。 - 数组类型
object[]支持通过任意合法索引访问元素,也可以用for循环、forEach等方式遍历所有元素,TypeScript不会限制索引的使用(只要运行时不越界)。
- 元组类型
内容的提问来源于stack exchange,提问作者Lambda
相关产品推荐
相关产品推荐

