` for arrays.">` for arrays.">
跳至主要内容

array-type

要求始终使用 T[]Array<T> 来表示数组。

🔧

此规则报告的一些问题可以通过 --fix ESLint 命令行选项 自动修复。

TypeScript 提供两种等效的方式来定义数组类型:T[]Array<T>。这两种风格在功能上是等效的。在整个代码库中始终使用相同的风格,可以使开发人员更容易阅读和理解数组类型。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/array-type": "error"
}
};

在 playground 中尝试此规则 ↗

选项

此规则接受以下选项

type ArrayOption = 'array' | 'array-simple' | 'generic';

type Options = [
{
/** The array type expected for mutable cases. */
default?: ArrayOption;
/** The array type expected for readonly cases. If omitted, the value for `default` will be used. */
readonly?: ArrayOption;
},
];

const defaultOptions: Options = [{ default: 'array' }];

默认配置将强制所有可变和只读数组使用 'array' 语法。

"array"

始终对所有数组类型使用 T[]readonly T[]

const x: Array<string> = ['a', 'b'];
const y: ReadonlyArray<string> = ['a', 'b'];
在 Playground 中打开

"generic"

始终对所有数组类型使用 Array<T>ReadonlyArray<T>

const x: string[] = ['a', 'b'];
const y: readonly string[] = ['a', 'b'];
在 Playground 中打开

"array-simple"

对简单类型(即仅为基本名称或类型引用的类型)使用 T[]readonly T[]。对所有其他类型(联合类型、交叉类型、对象类型、函数类型等)使用 Array<T>ReadonlyArray<T>

const a: (string | number)[] = ['a', 'b'];
const b: { prop: string }[] = [{ prop: 'a' }];
const c: (() => void)[] = [() => {}];
const d: Array<MyType> = ['a', 'b'];
const e: Array<string> = ['a', 'b'];
const f: ReadonlyArray<string> = ['a', 'b'];
在 Playground 中打开

组合矩阵

此矩阵列出了所有可能的选项组合及其对不同类型数组的预期结果。

defaultOptionreadonlyOption具有简单类型的数组包含非简单类型的数组只读简单类型数组只读非简单类型数组
数组number[](Foo & Bar)[]只读 number[]只读 (Foo & Bar)[]
数组数组number[](Foo & Bar)[]只读 number[]只读 (Foo & Bar)[]
数组数组-简单number[](Foo & Bar)[]只读 number[]ReadonlyArray<Foo & Bar>
数组泛型number[](Foo & Bar)[]ReadonlyArray<number>ReadonlyArray<Foo & Bar>
数组-简单number[]Array<Foo & Bar>只读 number[]ReadonlyArray<Foo & Bar>
数组-简单数组number[]Array<Foo & Bar>只读 number[]只读 (Foo & Bar)[]
数组-简单数组-简单number[]Array<Foo & Bar>只读 number[]ReadonlyArray<Foo & Bar>
数组-简单泛型number[]Array<Foo & Bar>ReadonlyArray<number>ReadonlyArray<Foo & Bar>
泛型Array<number>Array<Foo & Bar>ReadonlyArray<number>ReadonlyArray<Foo & Bar>
泛型数组Array<number>Array<Foo & Bar>只读 number[]只读 (Foo & Bar)[]
泛型数组-简单Array<number>Array<Foo & Bar>只读 number[]ReadonlyArray<Foo & Bar>
泛型泛型Array<number>Array<Foo & Bar>ReadonlyArray<number>ReadonlyArray<Foo & Bar>

何时不使用它

此规则纯粹是用于在项目中保持一致性的风格规则。如果您不想为数组类型保持一致的风格,可以将其关闭。

但是,请记住,不一致的风格会损害项目的可读性。我们建议为该规则选择一个最适合您的项目的选项。

资源