Skip to content

useArrayLiterals

¥Summary

¥How to configure

biome.json
{
"linter": {
"rules": {
"style": {
"useArrayLiterals": "error"
}
}
}
}

¥Description

禁止数组构造函数。

¥Disallow Array constructors.

通常不鼓励使用 Array 构造函数来构造新数组,而应使用数组文字表示法,因为存在单参数陷阱,并且 Array 全局变量可能会被重新定义。例外情况是,当 Array 构造函数通过为构造函数提供单个数字参数有意创建指定大小的稀疏数组时。

¥Use of the Array constructor to construct a new array is generally discouraged in favor of array literal notation because of the single-argument pitfall and because the Array global may be redefined. The exception is when the Array constructor intentionally creates sparse arrays of a specified size by giving the constructor a single numeric argument.

¥Examples

¥Invalid

const xs = Array();
code-block.js:1:12 lint/style/useArrayLiterals  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use an array literal instead of the Array constructor.

> 1 │ const xs = Array();
^^^^^^^
2 │

The Array constructor is misleading because it can be used to preallocate an array of a given length or to create an array with a given list of elements.

Safe fix: Use an array literal.

1 - const·xs·=·Array();
1+ const·xs·=·[];
2 2

const xs = Array(0, 1, 2);
code-block.js:1:12 lint/style/useArrayLiterals  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use an array literal instead of the Array constructor.

> 1 │ const xs = Array(0, 1, 2);
^^^^^^^^^^^^^^
2 │

The Array constructor is misleading because it can be used to preallocate an array of a given length or to create an array with a given list of elements.

Safe fix: Use an array literal.

1 - const·xs·=·Array(0,·1,·2);
1+ const·xs·=·[0,·1,·2];
2 2

const xs = new Array(0, 1, 2);
code-block.js:1:12 lint/style/useArrayLiterals  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use an array literal instead of the Array constructor.

> 1 │ const xs = new Array(0, 1, 2);
^^^^^^^^^^^^^^^^^^
2 │

The Array constructor is misleading because it can be used to preallocate an array of a given length or to create an array with a given list of elements.

Safe fix: Use an array literal.

1 - const·xs·=·new·Array(0,·1,·2);
1+ const·xs·=·[0,·1,·2];
2 2

const xs = Array(...args);
code-block.js:1:12 lint/style/useArrayLiterals  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use an array literal instead of the Array constructor.

> 1 │ const xs = Array(…args);
^^^^^^^^^^^^^^
2 │

The Array constructor is misleading because it can be used to preallocate an array of a given length or to create an array with a given list of elements.

Safe fix: Use an array literal.

1 - const·xs·=·Array(...args);
1+ const·xs·=·[...args];
2 2

const xs = new Array<number>()
code-block.ts:1:12 lint/style/useArrayLiterals  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use an array literal instead of the Array constructor.

> 1 │ const xs = new Array<number>()
^^^^^^^^^^^^^^^^^^^
2 │

The Array constructor is misleading because it can be used to preallocate an array of a given length or to create an array with a given list of elements.

Safe fix: Use an array literal.

1 - const·xs·=·new·Array<number>()
1+ const·xs:·number[]·=·[]
2 2

¥Valid

const xs = Array(65000);
const xs = [0, 1, 2];

¥Related links