typescript/prefer-reduce-type-parameter 스타일
작동 방식
이 규칙은 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