@putout/plugin-new
v4.0.0
Published
🐊Putout plugin adds ability to remove useless and add missing operator 'new'
Maintainers
Readme
@putout/plugin-new 
The
newoperator lets developers create an instance of a user-defined object type or of one of the built-in object types that has a constructor function.(c) MDN
🐊Putout plugin adds ability to add missing and remove useless operator new.
Install
npm i @putout/plugin-newRule
{
"rules": {
"new/remove-useless": "on",
"new/add-missing": "on"
}
}remove-useless
Operator new has no sense for Boolean, String, Number, Object, RegExp, Math, Reflect, Error, TypeError:
Thus the function call
Error(…)is equivalent to the object creation expressionnew Error(…)with the same arguments.(c) https://262.ecma-international.org/12.0/#sec-error-constructor
And Symbol, BigInt cannot be used with new, as it is primitive.
❌ Example of incorrect code
new Error('Something went wrong');
new new Boolean()();✅ Example of correct code
Error('Something went wrong');
Boolean();add-missing
The
Setconstructor lets you create Set objects that store unique values of any type, whether primitive values or object references.(c) MDN
Missing operator new should be added since built-in objects:
Set;WeakSet;Map;WeakMap;Int8Array;Uint8Array;Uint8ClampedArray;Int16Array;Uint16Array;Int32Array;Uint32Array;Float32Array;Float64Array;BigInt64Array;BigUint64Array;
Produces TypeError when called without new:
Uncaught TypeError: Constructor Set requires 'new'❌ Example of incorrect code
const map = Map();✅ Example of correct code
const map = new Map();Comparison
Linter | Rule | Fix
--------|-------|------------|
🐊 Putout | remove-useless-new| ✅
⏣ ESLint | no-new-wrappers | ❌
⠀| no-new-object | ❌
⠀| no-array-constructor | ❌
⠀| no-new-symbol | ❌
⠀| no-new-native-constructor | ❌
License
MIT
