Skip to content

useConsistentArrayType

Diagnostic Category: lint/style/useConsistentArrayType

Since: v1.5.0

Sources:

Require consistently using either T[] or Array<T>

TypeScript provides two equivalent ways to define an array type: T[] and Array<T>. The two styles are functionally equivalent. Using the same style consistently across your codebase makes it easier for developers to read and understand array types.

let invalid: Array<foo>;
code-block.ts:1:14 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use shorthand T[] syntax instead of Array<T> syntax.

> 1 │ let invalid: Array<foo>;
^^^^^^^^^^
2 │

Unsafe fix: Use shorthand T[] syntax to replace

1 - let·invalid:·Array<foo>;
1+ let·invalid:·foo[];
2 2

let invalid: Promise<Array<string>>;
code-block.ts:1:22 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use shorthand T[] syntax instead of Array<T> syntax.

> 1 │ let invalid: Promise<Array<string>>;
^^^^^^^^^^^^^
2 │

Unsafe fix: Use shorthand T[] syntax to replace

1 - let·invalid:·Promise<Array<string>>;
1+ let·invalid:·Promise<string[]>;
2 2

let invalid3: Array<Foo<Bar>>;
code-block.ts:1:15 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use shorthand T[] syntax instead of Array<T> syntax.

> 1 │ let invalid3: Array<Foo<Bar>>;
^^^^^^^^^^^^^^^
2 │

Unsafe fix: Use shorthand T[] syntax to replace

1 - let·invalid3:·Array<Foo<Bar>>;
1+ let·invalid3:·Foo<Bar>[];
2 2

const valid: Array<string | number> = ['a', 'b'];
const valid: Array<{ prop: string }> = [{ prop: 'a' }];
const valid: Array<() => void> = [() => {}];
const valid: MyType[] = ['a', 'b'];
const valid: string[] = ['a', 'b'];
const valid: readonly string[] = ['a', 'b'];

The rule provides two options that help to specify what type of array declarations to use.

Default: “shorthand”

{
"//": "...",
"options": {
"syntax": "shorthand"
}
}

By default, all array declarations will be converted to T[] or readonly T[], which it means shorthand, or if the options is set to the “generic”, that all will converted to Array<T> or ReadonlyArray<T>.