禁止使用魔术数字
禁止使用魔数。
此规则扩展了基本 eslint/no-magic-numbers
规则。它添加了对以下内容的支持:
- 数字字面量类型 (
type T = 1
), enum
成员 (enum Foo { bar = 1 }
),readonly
类属性 (class Foo { readonly bar = 1 }
)。
使用方法
.eslintrc.cjs
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"
}
};
在游乐场中尝试此规则 ↗
选项
参见 eslint/no-magic-numbers
选项。
此规则添加了以下选项
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
一个布尔值,用于指定在 TypeScript 中使用的枚举是否被认为是正常的。默认值为 false
。
{ "ignoreEnums": false }
选项的不正确代码示例
enum foo {
SECOND = 1000,
}
在游乐场中打开{ "ignoreEnums": true }
选项的正确代码示例
enum foo {
SECOND = 1000,
}
在游乐场中打开ignoreNumericLiteralTypes
一个布尔值,用于指定在 TypeScript 数字字面量类型中使用的数字是否被认为是正常的。默认值为 false
。
{ "ignoreNumericLiteralTypes": false }
选项的不正确代码示例
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
在游乐场中打开{ "ignoreNumericLiteralTypes": true }
选项的正确代码示例
type SmallPrimes = 2 | 3 | 5 | 7 | 11;
在游乐场中打开ignoreReadonlyClassProperties
{ "ignoreReadonlyClassProperties": false }
选项的不正确代码示例
class Foo {
readonly A = 1;
readonly B = 2;
public static readonly C = 1;
static readonly D = 1;
}
在游乐场中打开{ "ignoreReadonlyClassProperties": true }
选项的正确代码示例
class Foo {
readonly A = 1;
readonly B = 2;
public static readonly C = 1;
static readonly D = 1;
}
在游乐场中打开ignoreTypeIndexes
一个布尔值,用于指定是否允许使用数字索引类型。默认值为 false
。
{ "ignoreTypeIndexes": false }
选项的错误代码示例
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
在游乐场中打开{ "ignoreTypeIndexes": true }
选项的正确代码示例
type Foo = Bar[0];
type Baz = Parameters<Foo>[2];
在游乐场中打开何时不使用它
如果您的项目经常处理常量数字,并且您不想占用额外的空间来声明它们,那么此规则可能不适合您。我们建议至少使用描述性注释和/或名称来描述常量。您可以考虑使用 ESLint 禁用注释 而不是完全禁用此规则。