no-restricted-globals
Запрещает указанные глобальные переменные
Запрет на использование определённых глобальных переменных может быть полезен, если вы хотите разрешить набор глобальных переменных, но при этом запретить некоторые из них.
Например, в ранних версиях Internet Explorer текущее событие DOM предоставлялось в виде глобальной переменной event, но использование этой переменной уже давно считается плохой практикой. Это ограничение гарантирует, что данная переменная не будет использоваться в коде браузера.
Подробности правила
Это правило позволяет указать имена глобальных переменных, которые вы не хотите использовать в приложении.
Параметры
Это правило принимает параметры в виде строк и объектов, чтобы указать глобальные переменные, использование которых нужно запретить.
Используя строковый параметр, вы можете указать имя глобальной переменной, использование которой нужно запретить, в качестве значения в массиве параметров правила:
{
"rules": {
"no-restricted-globals": ["error", "event", "fdescribe"]
}
}
Кроме того, правило принимает объекты, в которых указываются имя глобальной переменной и необязательное пользовательское сообщение:
{
"rules": {
"no-restricted-globals": [
"error",
{
"name": "event",
"message": "Use local parameter instead."
},
{
"name": "fdescribe",
"message": "Do not commit fdescribe. Use describe instead."
}
]
}
}
Примеры неправильного кода для указанных имён глобальных переменных "event", "fdescribe":
/*global event, fdescribe*/
/*eslint no-restricted-globals: ["error", "event", "fdescribe"]*/
function onClick() {
console.log();
}
("foo", function() {
});
Примеры правильного кода для указанного имени глобальной переменной "event":
/*global event*/
/*eslint no-restricted-globals: ["error", "event"]*/
import event from "event-module";
/*global event*/
/*eslint no-restricted-globals: ["error", "event"]*/
const event = 1;
Примеры неправильного кода для указанного имени глобальной переменной "event" с пользовательским сообщением об ошибке:
/*global event*/
/* eslint no-restricted-globals: ["error", { name: "event", message: "Use local parameter instead." }] */
function onClick() {
console.log(); // Unexpected global variable 'event'. Use local parameter instead.
}
globals
Параметр-объект, значением которого является массив с именами глобальных переменных, использование которых нужно запретить.
Примеры неправильного кода для имён глобальных переменных "event" и "fdescribe":
/*global event, fdescribe*/
/*eslint no-restricted-globals: ["error", { globals: ["event", "fdescribe"] }]*/
function onClick() {
console.log();
}
("foo", function() {
});
Для конкретной глобальной переменной можно также задать пользовательское сообщение в массиве globals, используя объекты со свойствами name и message:
Примеры неправильного кода для имени глобальной переменной "event" с пользовательским сообщением об ошибке:
/*global event*/
/* eslint no-restricted-globals: ["error", { globals: [{ name: "event", message: "Use local parameter instead." }] }] */
function onClick() {
console.log();
}
checkGlobalObject
Логический параметр, включающий обнаружение запрещённых глобальных переменных, доступ к которым осуществляется через глобальные объекты. Значение по умолчанию — false.
Примеры неправильного кода для параметра checkGlobalObject: true:
/*global globalThis, self, window*/
/*eslint no-restricted-globals: ["error", { globals: ["Promise"], checkGlobalObject: true }]*/
globalThis.
self.
window.
globalObjects
Параметр-массив, задающий дополнительные имена глобальных объектов для проверки, когда включён параметр checkGlobalObject. По умолчанию правило проверяет следующие глобальные объекты: globalThis, self и window.
Примеры неправильного кода для параметра globalObjects:
/*global globalThis, self, window, myGlobal*/
/*eslint no-restricted-globals: ["error", {
globals: ["Promise"],
checkGlobalObject: true,
globalObjects: ["myGlobal"]
}]*/
globalThis.
self.
window.
myGlobal.;
Запрещённые глобальные переменные, используемые в аннотациях типов TypeScript — например, в ссылках на типы, наследовании интерфейсов или реализации классов, — игнорируются этим правилом.
Примеры правильного кода TypeScript для имён глобальных переменных “Promise”, “Event” и “Window”:
/*eslint no-restricted-globals: ["error", "Promise", "Event", "Window"]*/
const fetchData: Promise<string> = fetchString();
interface CustomEvent extends Event {}
class CustomWindow implements Window {}
function handleClick(event: Event) {
console.log(event);
}
Связанные правила
Версия
Это правило появилось в ESLint v2.3.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-restricted-globals