Typescript 中的 Array<Type> VS Type\[\]

新手上路,请多包涵

据我所知,当它是一个数组时,可以通过两种方式定义属性的类型。

 property_name: type

其中类型可以是

Array<string>, Array<MyType>, etc. (e.g. let prop1: Array<string>)

string[], MyType[], etc. (e.g. let prop1: string[])

这两种情况有什么 区别?还是我误解了某些东西(也许是关于铸造中使用的 <> 的东西?)

编辑,因为问题被标记为重复,我知道还有关于任何 [] 的其他问题,但我仍然在发布之前查看了它,对我来说,它更多的是关于类型“任何”而不是不同的 [] VS < > 我问

原文由 dragonmnl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
1 个回答

没有任何语义差异

完全没有区别。 Type[]Type 数组的 简写语法Array<Type>通用语法。它们是完全等价的。

该手册 在此处提供了一个示例。相当于写:

 function loggingIdentity<T>(arg: T[]): T[] {
    console.log(arg.length);
    return arg;
}

或者:

 function loggingIdentity<T>(arg: Array<T>): Array<T> {
    console.log(arg.length);
    return arg;
}

这是 一些发行说明 的引述:

Specifically, number[] is a shorthand version of Array<number> , just as Date[] is a shorthand for Array<Date> .

关于 readonly 类型修饰符

TypeScript 3.4,引入了 readonly 类型修饰符。 精确

readonly 类型修饰符只能用于数组类型和元组类型的语法

let err2: readonly Array<boolean>; // error!
let okay: readonly boolean[]; // works fine

以下声明等效于 readonly boolean[]

 let okay2: ReadonlyArray<boolean>;

原文由 Paleo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进