unicorn/no-useless-spread 정확성
동작 방식
다음과 같은 불필요한 경우에 전개 연산자(spread) 사용을 금지합니다:
- 배열 리터럴을 다른 배열 리터럴의 요소로 전개하는 경우
- 배열 리터럴을 함수 호출 또는
new호출의 인수로 전개하는 경우 - 객체 리터럴을 다른 객체 리터럴의 속성으로 전개하는 경우
- 즉시 생성된 배열을 복제하기 위해 전개 연산자를 사용하는 경우
왜 좋지 않은가?
다음 내장함수들은 반복 가능한 객체(반복자)를 받아들이므로, 반복 가능 객체를 배열로 변환할 필요가 없습니다:
Map생성자WeakMap생성자Set생성자WeakSet생성자TypedArray생성자Array.from(…)TypedArray.from(…)Promise.{all,allSettled,any,race}(…)Object.fromEntries(…)
for…of 루프는 배열뿐만 아니라 모든 반복 가능한 객체를 반복할 수 있으므로, 반복 가능 객체를 배열로 변환할 필요가 없습니다.
yield*는 다른 반복 가능 객체로 위임할 수 있으므로, 반복 가능 객체를 배열로 변환할 필요가 없습니다.
예시
이 규칙에 적합하지 않은 코드 예시:
javascript
const array = [firstElement, ...[secondElement], thirdElement];
await Promise.all([...iterable]);
for (const foo of [...set]);
function* foo() {
yield* [...anotherGenerator()];
}
function foo(bar) {
return [...bar.map((x) => x * 2)];
}이 규칙에 적합한 코드 예시:
javascript
const array = [firstElement, secondElement, thirdElement];
await Promise.all(iterable);
for (const foo of set);
function* foo() {
yield* anotherGenerator();
}
function foo(bar) {
return bar.map((x) => x * 2);
}사용 방법
이 규칙을 구성 파일이나 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"unicorn/no-useless-spread": "error"
}
}bash
oxlint --deny unicorn/no-useless-spread