Skip to content

useConsistentArrayType (since v1.5.0)

Diagnostic Category: lint/style/useConsistentArrayType

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>;
style/useConsistentArrayType.js: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>>;
style/useConsistentArrayType.js: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>>;
style/useConsistentArrayType.js: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>.