Запрет на определённые свойства
Запрет определённых свойств на определённых объектах
В кодовой базе могут быть запрещены определённые свойства объектов. Это полезно для устаревания API или ограничения использования методов модуля. Например, вы можете запретить использование describe.only при использовании Mocha или попросить людей использовать Object.assign вместо _.extend.
Подробное описание правила
Это правило проверяет доступ к заданному ключу свойства на заданном имени объекта, как при чтении значения свойства, так и при вызове его как функции. Вы можете указать необязательное сообщение, чтобы указать альтернативный API или причину ограничения. Это правило применяется как к свойствам, доступным через точку, так и к деструктуризации.
Параметры
Это правило принимает список объектов, где указаны имя объекта и имена свойств:
{
"rules": {
"no-restricted-properties": [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}]
}
}
Можно запретить несколько значений объекта/свойства, и вы можете указать необязательное сообщение:
{
"rules": {
"no-restricted-properties": [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}, {
"object": "disallowedObjectName",
"property": "anotherDisallowedPropertyName",
"message": "Please use allowedObjectName.allowedPropertyName."
}]
}
}
Если имя объекта опущено, свойство запрещено для всех объектов:
{
"rules": {
"no-restricted-properties": [2, {
"property": "__defineGetter__",
"message": "Please use Object.defineProperty instead."
}]
}
}
Если имя свойства опущено, доступ к любому свойству данного объекта запрещён:
{
"rules": {
"no-restricted-properties": [2, {
"object": "require",
"message": "Please call require() directly."
}]
}
}
Примеры неправильного кода для этого правила:
/* eslint no-restricted-properties: [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}] */
var example = ; /*error Disallowed object property: disallowedObjectName.disallowedPropertyName.*/
(); /*error Disallowed object property: disallowedObjectName.disallowedPropertyName.*/
/* eslint no-restricted-properties: [2, {
"property": "__defineGetter__"
}] */
(bar, baz);
const = qux();
() => {};
/* eslint no-restricted-properties: [2, {
"object": "require"
}] */
('foo');
Примеры правильного кода для этого правила:
/* eslint no-restricted-properties: [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}] */
var example = disallowedObjectName.somePropertyName;
allowedObjectName.disallowedPropertyName();
/* eslint no-restricted-properties: [2, {
"object": "require"
}] */
require('foo');
Когда не следует использовать
Если у вас нет комбинаций объект/свойство для ограничения, не следует использовать это правило.
Связанные правила
Версия
Это правило было добавлено в ESLint v3.5.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-restricted-properties