eslint/no-import-assign 正しさ
何を行うか
インポートされたバインディングへの代入を禁止します。
なぜ悪いのか
エクスポートモジュール(ES Modules)によってインポートされたバインディングの更新は、実行時エラーを引き起こします。
一般的に、TypeScript コンパイラはこのチェックを既に強制しています。ただし、Object.assign経由での代入など、一部のケースではTypeScriptが検出できない場合があることに注意が必要です。そのため、これらのケースにおいても、このルールはTypeScriptコードに対して依然として有用です。
例
このルールに対する誤ったコードの例:
javascript
import mod, { named } from "./mod.mjs";
import * as mod_ns from "./mod.mjs";
mod = 1; // エラー: 'mod' は読み取り専用です。
named = 2; // エラー: 'named' は読み取り専用です。
mod_ns.named = 3; // エラー: 'mod_ns' のメンバーは読み取り専用です。
mod_ns = {}; // エラー: 'mod_ns' は読み取り専用です。
// 'mod_ns' を拡張できません
Object.assign(mod_ns, { foo: "foo" }); // エラー: 'mod_ns' のメンバーは読み取り専用です。使用方法
設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:
json
{
"rules": {
"no-import-assign": "error"
}
}bash
oxlint --deny no-import-assign