打字稿中数组的两种写作有啥区别

Posted

技术标签:

【中文标题】打字稿中数组的两种写作有啥区别【英文标题】:What's the Difference between the two of writings of arrays in typescript打字稿中数组的两种写作有什么区别 【发布时间】:2015-07-26 06:20:36 【问题描述】:

TypeScript 与 javascript 一样,允许您使用值数组。 数组类型可以用两种方式之一来编写。首先,您使用 元素的类型,后跟 '[]' 表示该数组 元素类型:

var list:number[] = [1, 2, 3];

第二种方式使用泛型数组类型,Array:

var list:Array<number> = [1, 2, 3];

这两种语法有什么区别吗?有两种写这些方法的充分理由吗?(我知道泛型在其他语言中是一种东西,但我从未在过去的任何语言中使用过泛型)。

Documentation

【问题讨论】:

我想它是以强类型的方式与 Javascript 保持一致。我的意思是,在 Javascript 中你也可以使用 []new Array() 【参考方案1】:

它们是等价的。 number[] 表单是 Array&lt;number&gt; 泛型的简写。

section 3.7.4 of the spec 中的“数组类型文字”定义为:

数组类型字面量引用具有给定元素类型的数组类型(第 3.3.2 节)。

section 3.3.2 中的“数组类型”描述为:

数组类型是从全局模块中的通用接口类型“Array”创建的命名类型引用,其中数组元素类型作为类型参数。

这说明数组被定义为带有参数的泛型类型。通用是最终版本,但该描述紧随其后:

数组类型文字(第 3.7.4 节)为创建此类引用提供了简写符号。

没有区别,type[] 形式作为使用预先存在的 JS 模式的简写形式存在。

【讨论】:

以上是关于打字稿中数组的两种写作有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

打字稿中的 *.d.ts 与 *.ts 有啥区别?

打字稿中的数组

根据打字稿中另一个数组的值过滤数组

无法将数组分配给打字稿中的另一个数组

在打字稿中解析 JSON 数组

如何在打字稿中过滤对象数组