no-magic-numbers
Disallow magic numbers.
This rule extends the base eslint/no-magic-numbers
rule.
It adds support for:
- numeric literal types (
type T = 1
), enum
members (enum Foo { bar = 1 }
),readonly
class 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": "error"
}
};
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:
enum foo {
SECOND = 1000,
}
Open in PlaygroundExamples of correct code for the { "ignoreEnums": true }
option:
enum foo {
SECOND = 1000,
}
Open in PlaygroundignoreNumericLiteralTypes
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:
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
Open in PlaygroundExamples of correct code for the { "ignoreNumericLiteralTypes": true }
option:
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
Open in PlaygroundignoreReadonlyClassProperties
Examples of incorrect code for the { "ignoreReadonlyClassProperties": false }
option:
class Foo {
readonly A = 1;
readonly B = 2;
public static readonly C = 1;
static readonly D = 1;
}
Open in PlaygroundExamples of correct code for the { "ignoreReadonlyClassProperties": true }
option:
class Foo {
readonly A = 1;
readonly B = 2;
public static readonly C = 1;
static readonly D = 1;
}
Open in PlaygroundignoreTypeIndexes
A boolean to specify if numbers used to index types are okay. false
by default.
Examples of incorrect code for the { "ignoreTypeIndexes": false }
option:
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
Open in PlaygroundExamples of correct code for the { "ignoreTypeIndexes": true }
option:
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
Open in PlaygroundResources
Taken with ❤️ from ESLint core