Skip to content
← Back to rules

unicorn/no-useless-spread 정확성

This rule is turned on by default.
An auto-fix is available for this rule.

동작 방식

다음과 같은 불필요한 경우에 전개 연산자(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

참고 자료