メインコンテンツへスキップ

no-unsafe-declaration-merging

安全でない宣言のマージを禁止します。

拡張 "plugin:@typescript-eslint/recommended" ESLint 設定 で有効にすると、このルールが有効になります。

TypeScript の「宣言のマージ」は、同じ名前の別々の宣言のマージをサポートしています。

クラスとインターフェース間の宣言のマージは安全ではありません。TypeScriptコンパイラーは、プロパティが初期化されているかどうかを確認しないため、ランタイムエラーを引き起こすコードをTypeScriptが検出できない可能性があります。

interface Foo {
nums: number[];
}

class Foo {}

const foo = new Foo();

foo.nums.push(1); // Runtime Error: Cannot read properties of undefined.
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unsafe-declaration-merging": "error"
}
};

プレイグラウンドでこのルールを試す ↗

interface Foo {}

class Foo {}
プレイグラウンドで開く

オプション

このルールは設定できません。

使用しない場合

プロジェクトで安全でない宣言マージパターンを使用して意図的にクラスとインターフェースを定義している場合、このルールは適切ではない可能性があります。このルールを完全に無効にするのではなく、特定の状況に対してESLint disable コメントを使用することを検討してください。

参考資料

リソース