docs: {
description: "Disallow magic numbers",
recommended: false,
- url: "https://eslint.org/docs/rules/no-magic-numbers"
+ url: "https://eslint.org/docs/latest/rules/no-magic-numbers"
},
schema: [{
ignoreDefaultValues: {
type: "boolean",
default: false
+ },
+ ignoreClassFieldInitialValues: {
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
enforceConst = !!config.enforceConst,
ignore = new Set((config.ignore || []).map(normalizeIgnoreValue)),
ignoreArrayIndexes = !!config.ignoreArrayIndexes,
- ignoreDefaultValues = !!config.ignoreDefaultValues;
+ ignoreDefaultValues = !!config.ignoreDefaultValues,
+ ignoreClassFieldInitialValues = !!config.ignoreClassFieldInitialValues;
const okTypes = detectObjects ? [] : ["ObjectExpression", "Property", "AssignmentExpression"];
return parent.type === "AssignmentPattern" && parent.right === fullNumberNode;
}
+ /**
+ * Returns whether the number is the initial value of a class field.
+ * @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node
+ * @returns {boolean} true if the number is the initial value of a class field.
+ */
+ function isClassFieldInitialValue(fullNumberNode) {
+ const parent = fullNumberNode.parent;
+
+ return parent.type === "PropertyDefinition" && parent.value === fullNumberNode;
+ }
+
/**
* Returns whether the given node is used as a radix within parseInt() or Number.parseInt()
* @param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node
if (
isIgnoredValue(value) ||
(ignoreDefaultValues && isDefaultValue(fullNumberNode)) ||
+ (ignoreClassFieldInitialValues && isClassFieldInitialValue(fullNumberNode)) ||
isParseIntRadix(fullNumberNode) ||
isJSXNumber(fullNumberNode) ||
(ignoreArrayIndexes && isArrayIndex(fullNumberNode, value))