跳到内容

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];

参考资料

根据 MIT 许可证发布。