typescript/prefer-function-type 스타일
작동 방식
콜 서명이 있는 인터페이스 대신 함수 타입을 사용하도록 강제합니다.
왜 문제가 될까?
TypeScript는 함수에 대한 타입을 선언하는 두 가지 일반적인 방법을 허용합니다:
- 함수 타입:
() => string - 콜 서명이 있는 객체 타입:
{ (): string }
함수 타입 형식은 더 간결하고 가독성이 뛰어나므로 가능할 경우 일반적으로 선호됩니다. 단순히 콜 서명만 포함하는 인터페이스는 추가적인 기능 없이 불필요한 반복을 만듭니다.
예시
이 규칙에 잘못된 코드 예시:
typescript
interface Example {
(): string;
}
function foo(example: { (): number }): number {
return example();
}
interface ReturnsSelf {
(arg: string): this;
}이 규칙에 올바른 코드 예시:
typescript
type Example = () => string;
function foo(example: () => number): number {
return example();
}
// 함수 자체를 반환하며, `this` 인자도 아님
type ReturnsSelf = (arg: string) => ReturnsSelf;
// 여러 속성 허용
function foo(bar: { (): string; baz: number }): string {
return bar();
}
// 여러 콜 서명(오버로드) 허용
interface Overloaded {
(data: string): number;
(id: number): string;
}
// 위 오버로드 인터페이스와 동일
type Intersection = ((data: string) => number) & ((id: number) => string);사용 방법
구성 파일 또는 명령줄에서 이 규칙을 활성화하려면 다음을 사용하세요:
json
{
"rules": {
"typescript/prefer-function-type": "error"
}
}bash
oxlint --deny typescript/prefer-function-type