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

default: false

any として明示的に型指定された引数を無視するかどうか。

allowDirectConstAssertionInArrowFunctions

type: boolean

default: true

as const 型アサーションを返すボディのないアロー関数の戻り値型注釈を無視するかどうか。関数のパラメータには依然として型注釈が必要です。

allowHigherOrderFunctions

type: boolean

default: true

他の関数式を即座に返す関数の戻り値型注釈を無視するかどうか。関数のパラメータには依然として型注釈が必要です。

allowOverloadFunctions

type: boolean

default: false

オーバーロードシグネチャを持つ関数の戻り値型注釈を無視するかどうか。

allowTypedFunctionExpressions

type: boolean

default: true

関数式の変数に対する型注釈を無視するかどうか。

allowedNames

type: string[]

default: []

引数や戻り値の検査を行わない関数/メソッド名の配列。

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下のようにします:

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

参照