unicorn/prefer-global-this スタイル
何を実行するか
globalThis を使用して、環境固有のグローバルオブジェクトの別名(window、self、または global)の使用を強制します。標準の globalThis を使うことで、コードのブラウザ、Web Worker、Node.js、および将来の JavaScript 実行環境間での移植性が確保されます。
なぜ問題なのか
• 移植性 – window はブラウザのメインスレッドでのみ定義され、self は Web Worker で使われ、global は Node.js 固有です。適切でない別名を選択すると、元の環境外でコードが実行された際にランタイムエラーが発生します。
• 明確さ – globalThis は、特定のプラットフォームではなく、グローバルオブジェクト自体を指していることを明確に伝えます。
例
このルールに対して誤ったコードの例:
js
// ブラウザ専用
window.alert("こんにちは");
// Node.js専用
if (typeof global.Buffer !== "undefined") {
}
// Web Worker専用
self.postMessage("完了");このルールに対して正しいコードの例:
js
globalThis.alert("こんにちは");
if (typeof globalThis.Buffer !== "undefined") {
}
globalThis.postMessage("完了");使い方
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"rules": {
"unicorn/prefer-global-this": "error"
}
}bash
oxlint --deny unicorn/prefer-global-this