typescript/no-misused-spread 정확성
작동 방식
이 규칙은 의미가 없거나 런타임 오류를 유발할 수 있는 곳에서 전개 구문(스프레드 문법)을 금지합니다.
왜 문제가 될까?
전개 연산자는 즉시 드러나지 않을 수 있지만 런타임 오류 또는 예기치 않은 동작을 일으킬 수 있는 방식으로 잘못 사용될 수 있습니다. 이 규칙은 이러한 일반적인 오용 사례를 감지하는 데 도움이 됩니다.
예시
이 규칙에 잘못된 코드 예시:
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
특정 선언과 매칭하기 위한 타입 또는 값 지정자
다음 네 가지 유형의 지정자를 지원합니다:
- 문자열 지정자 (사용 중단됨): 이름 기반의 보편적 매칭
json
"Promise"- 파일 지정자: 로컬 파일 내에 선언된 타입/값과 매칭
json
{ "from": "file", "name": "MyType" }
{ "from": "file", "name": ["Type1", "Type2"] }
{ "from": "file", "name": "MyType", "path": "./types.ts" }- Lib 지정자: TypeScript 내장 라이브러리 타입과 매칭
json
{ "from": "lib", "name": "Promise" }
{ "from": "lib", "name": ["Promise", "PromiseLike"] }- 패키지 지정자: 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