Package Exports
- @putout/plugin-new
- @putout/plugin-new/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@putout/plugin-new) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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