Skip to content
← Back to rules

typescript/explicit-module-boundary-types 제한

작동 방식

내보낸 함수 및 클래스의 공개 클래스 메서드에 명시적인 반환 타입과 인수 타입을 요구합니다.

왜 문제가 되는가?

함수 반환 값과 인수에 대한 명시적 타입은 모듈 경계의 입력과 출력이 무엇인지 호출 코드에서 명확히 이해할 수 있도록 도와줍니다. 이러한 타입에 대해 명시적인 타입 주석을 추가하면 코드의 가독성을 높일 수 있습니다. 또한 대규모 코드베이스에서 TypeScript 타입 검사 성능을 향상시킬 수 있습니다.

예시

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

ts
// 반환값이 없음을 나타내야 합니다 (void)
export function test() {
  return;
}

// 문자열을 반환해야 함을 나타냅니다
export var arrowFn = () => "test";

// 모든 인수는 타입이 지정되어야 합니다
export var arrowFn = (arg): string => `test ${arg}`;
export var arrowFn = (arg: any): string => `test ${arg}`;

export class Test {
  // 반환값이 없음을 나타내야 합니다 (void)
  method() {
    return;
  }
}

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

ts
// 반환값이 없는 함수 (void)
export function test(): void {
  return;
}

// 문자열 타입의 반환값
export var arrowFn = (): string => "test";

// 모든 인수는 타입이 지정되어야 합니다
export var arrowFn = (arg: string): string => `test ${arg}`;
export var arrowFn = (arg: unknown): string => `test ${arg}`;

export class Test {
  // 반환값이 없는 클래스 메서드 (void)
  method(): void {
    return;
  }
}

// 내보내지 않은 함수이므로 이 규칙이 적용되지 않습니다.
function test() {
  return;
}

구성

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

allowArgumentsExplicitlyTypedAsAny

type: boolean

기본값: false

any로 명시적으로 타입 지정된 인수를 무시할지 여부.

allowDirectConstAssertionInArrowFunctions

type: boolean

기본값: true

as const 타입 암시를 반환하는 본문이 없는 화살표 함수의 반환 타입 주석을 무시할지 여부. 함수의 매개변수는 여전히 타입 지정해야 합니다.

allowHigherOrderFunctions

type: boolean

기본값: true

다른 함수 표현식을 즉시 반환하는 함수의 반환 타입 주석을 무시할지 여부. 함수의 매개변수는 여전히 타입 지정해야 합니다.

allowOverloadFunctions

type: boolean

기본값: false

오버로드 서명을 가진 함수의 반환 타입 주석을 무시할지 여부.

allowTypedFunctionExpressions

type: boolean

기본값: true

함수 표현식의 변수에 대한 타입 주석을 무시할지 여부.

allowedNames

type: string[]

기본값: []

인수나 반환 값을 검사하지 않을 함수/메서드 이름 배열입니다.

사용 방법

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

json
{
  "rules": {
    "typescript/explicit-module-boundary-types": "error"
  }
}
bash
oxlint --deny typescript/explicit-module-boundary-types

참고 자료