no-restricted-properties
不允許在某些物件上使用某些屬性
在程式碼庫中可能不允許使用物件上的某些屬性。這對於棄用 API 或限制模組方法的使用非常有用。例如,您可能不希望在使用 Mocha 時使用 describe.only
,或告知人們使用 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 中引入。