Skip to content
7 changes: 7 additions & 0 deletions docs/rules/prefer-number-properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@ Default: `false`

Pass `checkInfinity: true` to enable check on `Infinity`.

### checkNaN

Type: `boolean`\
Default: `true`

Pass `checkNaN: false` to disable check on `NaN`.

#### Fail

```js
Expand Down
21 changes: 17 additions & 4 deletions rules/prefer-number-properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,25 @@ function checkProperty({node, path: [name]}, sourceCode) {
const create = context => {
const {
checkInfinity,
checkNaN,
} = {
checkInfinity: false,
checkNaN: false,
...context.options[0],
};
const {sourceCode} = context;

let objects = Object.keys(globalObjects);
if (!checkInfinity) {
objects = objects.filter(name => name !== 'Infinity');
}
const objects = Object.keys(globalObjects).filter(name => {
if (!checkInfinity && name === 'Infinity') {
return false;
}

if (!checkNaN && name === 'NaN') {
return false;
}

return true;
});

const tracker = new GlobalReferenceTracker({
objects,
Expand All @@ -106,6 +115,10 @@ const schema = [
type: 'boolean',
default: true,
},
checkNaN: {
type: 'boolean',
default: true,
},
},
},
];
Expand Down
1 change: 1 addition & 0 deletions test/prefer-number-properties.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@ test({
'class Foo { Infinity(){}}',
'const foo = Infinity;',
'const foo = -Infinity;',
'const foo = NaN;',
],
invalid: [
{
Expand Down