两者严格来说,并没有什么功能上的区别。平时开发中可能T[]比较多。
相比较来说,Array的方式更好。
下面用 1 和 2 表示Array 和 T[]
可能大家觉得T[]的方式在写代码的时候很方便,但是大部分场景下,我们所说的优秀的代码不是为了自己书写时方便,而是为了其他人阅读起来成本更低。这就类似于我们不用变量 u 而是用 upperCase表示大写字符串。代码要可读性强。
相对于T[]的书写起来“方便”,Array的优点在于:可读性好,可维护性好。
- Array<{a: number}> vs {a: number}[]
当前端的对象比较大时,你需要阅读到之后才会发现类型是一个数组而不是对象。相比之下,方式1更直观。
- ReadonlyArray vs readonly string[]
方式2的声明readonly与具体类型是分割的,在一些复杂场景下可能不会那么直观。
- 联合类型: Array<string | number> vs (string | number)[]
方式2容易出现string | number[]这种错误
- keyof:
interface ObjType {
a: number;
b: string;
c: boolean
}
type FirstWay = Array<keyof ObjType>
type SecondWay = (keyof ObjType)[]
方式2相对来说,容易出现keyof ObjType[]这种错误。