consistent-type-exports
型のexportの一貫した使用を強制します。
このルールによって報告されるいくつかの問題は、 --fix
ESLint コマンドラインオプション.
💭 このルールを実行するには 型情報
TypeScriptでは、exportにtype
キーワードを指定して、exportがランタイムではなく型システムにのみ存在することを示すことができます。これにより、トランスパイラーは依存関係の型を知らなくてもexportを削除できます。
詳細については、ブログ > 一貫した型のexportとimport: その理由と方法を参照してください。
module.exports = {
"rules": {
"@typescript-eslint/consistent-type-exports": "error"
}
};
プレイグラウンドでこのルールを試す ↗
例
- ❌ 不正
- ✅ 正しい
interface ButtonProps {
onClick: () => void;
}
class Button implements ButtonProps {
onClick = () => console.log('button!');
}
export { Button, ButtonProps };
プレイグラウンドで開くinterface ButtonProps {
onClick: () => void;
}
class Button implements ButtonProps {
onClick = () => console.log('button!');
}
export { Button };
export type { ButtonProps };
プレイグラウンドで開くオプション
このルールは以下のオプションを受け付けます。
type Options = [
{
fixMixedExportsWithInlineTypeSpecifier?: boolean;
},
];
const defaultOptions: Options = [
{ fixMixedExportsWithInlineTypeSpecifier: false },
];
fixMixedExportsWithInlineTypeSpecifier
これがtrueに設定されている場合、このルールはTS 4.5の「インライン型指定子」を使用して「混合」exportケースを自動修正します。TypeScript 4.5未満のバージョンを使用している場合は、このオプションを使用できません。
たとえば、次のコードは
const x = 1;
type T = number;
export { x, T };
{fixMixedExportsWithInlineTypeSpecifier: true}
の場合、次のように修正されます
const x = 1;
type T = number;
export { x, type T };
{fixMixedExportsWithInlineTypeSpecifier: false}
の場合、次のように修正されます
const x = 1;
type T = number;
export type { T };
export { x };
使用しない場合
--isolatedModules
を使用している場合、型がexport type
を使用して再exportされていない場合、コンパイラーはエラーを出します。このような場合、このルールはあまり役に立たない可能性があります。
スタイルの理由から両方のexportの種類を明示的に使用したい場合や、あるスタイルを他のスタイルよりも優先して強制したくない場合は、このルールを避けることができます。
ただし、一貫性のないスタイルはプロジェクトの可読性を損なう可能性があることに注意してください。プロジェクトに最適なこのルールの単一のオプションを選択することをお勧めします。
型チェック付きのlintルールは従来のlintルールよりも強力ですが、型チェック付きlintの構成も必要です。型チェック付きルールを有効にした後でパフォーマンスの低下が発生した場合は、パフォーマンスのトラブルシューティングを参照してください。