Skip to content
← Back to rules

unicorn/prefer-global-this スタイル

An auto-fix is available for this rule.

何を実行するか

globalThis を使用して、環境固有のグローバルオブジェクトの別名(windowself、または 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

参照