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."
}]
}
}
此規則的錯誤程式碼範例
在 Playground 中開啟
/* eslint no-restricted-properties: [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}] */
const example = ; /*error Disallowed object property: disallowedObjectName.disallowedPropertyName.*/
(); /*error Disallowed object property: disallowedObjectName.disallowedPropertyName.*/
在 Playground 中開啟
/* eslint no-restricted-properties: [2, {
"property": "__defineGetter__"
}] */
(bar, baz);
const = qux();
() => {};
在 Playground 中開啟
/* eslint no-restricted-properties: [2, {
"object": "require"
}] */
('foo');
此規則的正確程式碼範例
在 Playground 中開啟
/* eslint no-restricted-properties: [2, {
"object": "disallowedObjectName",
"property": "disallowedPropertyName"
}] */
const example = disallowedObjectName.somePropertyName;
allowedObjectName.disallowedPropertyName();
在 Playground 中開啟
/* eslint no-restricted-properties: [2, {
"object": "require"
}] */
require('foo');
何時不該使用
如果您沒有任何要限制的物件/屬性組合,則不應使用此規則。
相關規則
版本
此規則在 ESLint v3.5.0 中引入。