🐊Putout plugin adds ability to help with transforming code related to types.
npm i putout @putout/plugin-types -D
- ✅ apply-is-array;
- ✅ convert-typeof-to-is-type;
- ✅ declare;
- ✅ remove-double-negations;
- ✅ remove-useless-conversion;
- ✅ remove-useless-constructor;
- ✅ remove-useless-typeof;
{
"rules": {
"types/declare": "on",
"types/convert-typeof-to-istype": "on",
"types/remove-useless-conversion": "on",
"types/remove-useless-constructor": "on",
"types/remove-double-negations": "on",
"types/remove-useless-typeof": "on",
"types/apply-is-array": "on"
}
}Based on @putout/operator-declare.
Supported assertions:
isString;isEmptyString;isNumber;isFn;isBool;isObject;isUndefined;isSymbol;isNull;isBigInt;isArray;isEmptyArray;
isString('hello');const isString = (a) => typeof a === 'string';
isString('hello');When you want to skip some declaration use dismiss:
{
"rules": {
"types/declare": ["on", {
"dismiss": ["isString"]
}]
}
}The
typeofoperator returns a string indicating the type of the unevaluated operand.(c) MDN
if (typeof a === 'boolean')
return x;const isBool = (a) => typeof a === 'boolean';
if (isBool(a))
return x;const a = !![1].includes(1);
const b = Boolean([1].includes(1));const a = [1].includes(1);Wrapper classes have surprising behaviour, such as
new Boolean(false)evaluating totrue.
🐊Putout plugin adds ability to remove useless constructor. Use with new/remove-useless.
const s = String('hello');
const b = Boolean(false);
const n = Number(5);const s = 'hello';
const b = false;
const n = 5;It is possible to use a couple of NOT operators (
!!) in series to explicitly force the conversion of any value to the corresponding boolean primitive. The conversion is based on the "truthyness" or "falsyness" of the value.The same conversion can be done through the
Booleanfunction.(c) MDN
if (!!a)
console.log('hi');if (a)
console.log('hi');The
typeofoperator returns a string indicating the type of the unevaluated operand.(c) MDN
typeof typeof 'hello';typeof 'hello';The
Array.isArray()method determines whether the passed value is anArray. When checking forArrayinstance,Array.isArray()is preferred overinstanceofbecause it works throughiframes.
x instanceof Array;const {isArray} = Array;
isArray(x);In case of using inline option:
{
"rules": {
"types/apply-is-array": ["on", {
"inline": true
}]
}
}Array.isArray will be inlined:
Array.isArray(x);MIT
| Linter | Rule | Fix |
|---|---|---|
| 🐊 Putout | types |
✅ |
| ⏣ ESLint | no-implicit-coercion |
✅ |
MIT