Skip to content
← Back to rules

typescript/no-misused-spread 정확성

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.
An auto-fix is available for this rule.

작동 방식

이 규칙은 의미가 없거나 런타임 오류를 유발할 수 있는 곳에서 전개 구문(스프레드 문법)을 금지합니다.

왜 문제가 될까?

전개 연산자는 즉시 드러나지 않을 수 있지만 런타임 오류 또는 예기치 않은 동작을 일으킬 수 있는 방식으로 잘못 사용될 수 있습니다. 이 규칙은 이러한 일반적인 오용 사례를 감지하는 데 도움이 됩니다.

예시

이 규칙에 잘못된 코드 예시:

ts
// 반복 불가능한 값에 전개 연산자 사용하기
const num = 42;
const arr = [...num]; // 런타임 오류: num은 반복 가능하지 않음

// 프로미스에 전개 연산자 사용하기
const promise = Promise.resolve([1, 2, 3]);
const arr2 = [...promise]; // 런타임 오류: 프로미스는 반복 가능하지 않음

// 객체 리터럴 내부에 비객체 전개 연산자 사용하기
const str = "hello";
const obj = { ...str }; // 예기치 않게 {'0': 'h', '1': 'e', ...}와 같이 생성됨

이 규칙에 올바른 코드 예시:

ts
// 배열 전개
const arr1 = [1, 2, 3];
const arr2 = [...arr1];

// 객체 전개
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1 };

// 해결된 프로미스 전개
const promise = Promise.resolve([1, 2, 3]);
const arr3 = [...(await promise)];

// 필요 시, 반복 불가능한 값에 대해 Array.from 사용하기
const str = "hello";
const arr4 = Array.from(str); // ['h', 'e', 'l', 'l', 'o']

구성 옵션

이 규칙은 다음 속성을 가진 구성 객체를 수락합니다.

allow

type: array

기본값: []

일반적으로 오용으로 경고가 발생할 수 있지만 허용되는 타입 또는 값 지정자 배열입니다.

allow[n]

type: string

특정 선언과 매칭하기 위한 타입 또는 값 지정자

다음 네 가지 유형의 지정자를 지원합니다:

  1. 문자열 지정자 (사용 중단됨): 이름 기반의 보편적 매칭
json
"Promise"
  1. 파일 지정자: 로컬 파일 내에 선언된 타입/값과 매칭
json
{ "from": "file", "name": "MyType" }
{ "from": "file", "name": ["Type1", "Type2"] }
{ "from": "file", "name": "MyType", "path": "./types.ts" }
  1. Lib 지정자: TypeScript 내장 라이브러리 타입과 매칭
json
{ "from": "lib", "name": "Promise" }
{ "from": "lib", "name": ["Promise", "PromiseLike"] }
  1. 패키지 지정자: npm 패키지에서 가져온 타입/값과 매칭
json
{ "from": "package", "name": "Observable", "package": "rxjs" }
{ "from": "package", "name": ["Observable", "Subject"], "package": "rxjs" }

사용 방법

이 규칙을 구성 파일 또는 CLI를 통해 활성화하려면 다음과 같이 사용할 수 있습니다:

json
{
  "rules": {
    "typescript/no-misused-spread": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-misused-spread

참고 자료