Array<T> or T[] in TS ?

444 阅读1分钟

两者严格来说,并没有什么功能上的区别。平时开发中可能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[]这种错误。