unicorn/prefer-global-this 风格
它做了什么
强制使用 globalThis 而不是环境特定的全局对象别名(如 window、self 或 global)。使用标准的 globalThis 可使你的代码在浏览器、Web Workers、Node.js 以及未来的 JavaScript 运行时之间具有更好的可移植性。
为什么这是个问题?
• 可移植性 – window 仅在浏览器主线程中定义,self 用于 Web Workers,而 global 是 Node.js 特有的。选择错误的别名会导致代码在原始环境之外执行时出现运行时崩溃。 • 清晰性 – globalThis 明确表示你引用的是全局对象本身,而非某个特定平台。
示例
此规则的错误代码示例:
js
// 仅限浏览器
window.alert("Hi");
// 仅限 Node.js
if (typeof global.Buffer !== "undefined") {
}
// 仅限 Web Worker
self.postMessage("done");此规则的正确代码示例:
js
globalThis.alert("Hi");
if (typeof globalThis.Buffer !== "undefined") {
}
globalThis.postMessage("done");如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"rules": {
"unicorn/prefer-global-this": "error"
}
}bash
oxlint --deny unicorn/prefer-global-this