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