Skip to content
← Back to rules

typescript/prefer-reduce-type-parameter 스타일

💭 This rule requires type information.
An auto-fix is available for this rule.

작동 방식

이 규칙은 Array.reduce에서 누산기의 타입 매개변수를 사용하는 것을 캐스팅보다 선호합니다.

왜 좋지 않은가?

Array.reduce는 누산기의 타입을 지정하기 위해 제네릭 타입 매개변수를 사용할 수 있습니다. 이 방법은 결과를 캐스팅하는 것보다 더 나은 타입 안전성을 제공하며, 의도한 타입을 더 명확하게 표현하기 때문에 선호됩니다.

예시

이 규칙에 부적절한 코드 예시:

ts
const numbers = [1, 2, 3];

// 결과를 캐스팅하는 경우
const sum = numbers.reduce((acc, val) => acc + val, 0) as number;

// 누산기에 타입 애스서트 사용
const result = [1, 2, 3].reduce((acc: string[], curr) => {
  acc.push(curr.toString());
  return acc;
}, [] as string[]);

이 규칙에 적절한 코드 예시:

ts
const numbers = [1, 2, 3];

// 타입 매개변수 사용
const sum = numbers.reduce<number>((acc, val) => acc + val, 0);

// 복잡한 타입에 대한 타입 매개변수
const result = [1, 2, 3].reduce<string[]>((acc, curr) => {
  acc.push(curr.toString());
  return acc;
}, []);

// TypeScript가 타입을 추론할 수 있는 경우, 매개변수가 필요 없음
const simpleSum = numbers.reduce((acc, val) => acc + val, 0);

// 타입 매개변수를 사용한 객체 누산기
interface Count {
  [key: string]: number;
}

const counts = ["a", "b", "a"].reduce<Count>((acc, item) => {
  acc[item] = (acc[item] || 0) + 1;
  return acc;
}, {});

사용 방법

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

json
{
  "rules": {
    "typescript/prefer-reduce-type-parameter": "error"
  }
}
bash
oxlint --type-aware --deny typescript/prefer-reduce-type-parameter

참고 자료