no-magic-numbers
Disallow magic numbers.
Examples
This rule extends the base eslint/no-magic-numbers rule.
It adds support for:
- numeric literal types (type T = 1),
- enummembers (- enum Foo { bar = 1 }),
- readonlyclass properties (- class Foo { readonly bar = 1 }).
How to Use
module.exports = {
  "rules": {
    // Note: you must disable the base rule as it can report incorrect errors
    "no-magic-numbers": "off",
    "@typescript-eslint/no-magic-numbers": "warn"
  }
};
Options
See eslint/no-magic-numbers options.
This rule adds the following options:
interface Options extends BaseNoMagicNumbersOptions {
  ignoreEnums?: boolean;
  ignoreNumericLiteralTypes?: boolean;
  ignoreReadonlyClassProperties?: boolean;
  ignoreTypeIndexes?: boolean;
}
const defaultOptions: Options = {
  ...baseNoMagicNumbersDefaultOptions,
  ignoreEnums: false,
  ignoreNumericLiteralTypes: false,
  ignoreReadonlyClassProperties: false,
  ignoreTypeIndexes: false,
};
ignoreEnums
A boolean to specify if enums used in TypeScript are considered okay. false by default.
Examples of incorrect code for the { "ignoreEnums": false } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreEnums": false }]*/
enum foo {
  SECOND = 1000,
}
Examples of correct code for the { "ignoreEnums": true } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreEnums": true }]*/
enum foo {
  SECOND = 1000,
}
ignoreNumericLiteralTypes
A boolean to specify if numbers used in TypeScript numeric literal types are considered okay. false by default.
Examples of incorrect code for the { "ignoreNumericLiteralTypes": false } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreNumericLiteralTypes": false }]*/
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
Examples of correct code for the { "ignoreNumericLiteralTypes": true } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreNumericLiteralTypes": true }]*/
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
ignoreReadonlyClassProperties
Examples of incorrect code for the { "ignoreReadonlyClassProperties": false } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreReadonlyClassProperties": false }]*/
class Foo {
  readonly A = 1;
  readonly B = 2;
  public static readonly C = 1;
  static readonly D = 1;
}
Examples of correct code for the { "ignoreReadonlyClassProperties": true } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreReadonlyClassProperties": true }]*/
class Foo {
  readonly A = 1;
  readonly B = 2;
  public static readonly C = 1;
  static readonly D = 1;
}
ignoreTypeIndexes
A boolean to specify if numbers used to index types are okay. false by default.
Examples of incorrect code for the { "ignoreTypeIndexes": false } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreTypeIndexes": false }]*/
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
Examples of correct code for the { "ignoreTypeIndexes": true } option:
/*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreTypeIndexes": true }]*/
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
Taken with ❤️ from ESLint core