eslint/no-magic-numbers Style
它的作用是什么
no-magic-numbers 规则旨在通过确保将特殊数字声明为常数以明确其含义,从而使代码更具可读性并简化重构。当前的实现不支持数组索引中的 BigInt 数字。
为什么不好?
“魔术数字”是在代码中反复出现但没有明确含义的数字。最好用命名常量替换它们。
示例
此规则不正确代码的示例
javascript
var dutyFreePrice = 100;
var finalPrice = dutyFreePrice + dutyFreePrice * 0.25;
此规则的选项“ignore”的正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "ignore": [1] }]*/
var data = ["foo", "bar", "baz"];
var dataLast = data.length && data[data.length - 1];
此规则的选项“ignoreArrayIndexes”的正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "ignoreArrayIndexes": true }]*/
var item = data[2];
data[100] = a;
f(data[0]);
a = data[-0]; // same as data[0], -0 will be coerced to "0"
a = data[0xab];
a = data[5.6e1];
a = data[4294967294]; // max array index
此规则的选项“ignoreDefaultValues”的正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "ignoreDefaultValues": true }]*/
const { tax = 0.25 } = accountancy;
function mapParallel(concurrency = 3) {
/***/
}
此规则的选项“ignoreClassFieldInitialValues”的正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "ignoreClassFieldInitialValues": true }]*/
class C {
foo = 2;
bar = -3;
#baz = 4;
static qux = 5;
}
此规则的选项“enforceConst”的不正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "enforceConst": true }]*/
var TAX = 0.25;
此规则的选项“detectObjects”的不正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "detectObjects": true }]*/
var magic = {
tax: 0.25,
};
此规则的选项“detectObjects”的正确代码示例
javascript
/*typescript no-magic-numbers: ["error", { "detectObjects": true }]*/
var TAX = 0.25;
var magic = {
tax: TAX,
};
此规则的选项“ignoreEnums”的正确代码示例
typescript
/*typescript no-magic-numbers: ["error", { "ignoreEnums": true }]*/
enum foo {
SECOND = 1000,
}
此规则的选项“ignoreNumericLiteralTypes”的正确代码示例
typescript
/*typescript no-magic-numbers: ["error", { "ignoreNumericLiteralTypes": true }]*/
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
此规则的选项“ignoreReadonlyClassProperties”的正确代码示例
typescript
/*typescript no-magic-numbers: ["error", { "ignoreReadonlyClassProperties": true }]*/
class Foo {
readonly A = 1;
readonly B = 2;
public static readonly C = 1;
static readonly D = 1;
}
此规则的选项“ignoreTypeIndexes”的正确代码示例
typescript
/*typescript no-magic-numbers: ["error", { "ignoreTypeIndexes": true }]*/
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];