🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

@putout/plugin-types

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@putout/plugin-types

🐊Putout plugin adds ability to transform code related to types assertions

8.0.0
latest
Source
npm
Version published
Weekly downloads
5.5K
-2.82%
Maintainers
1
Weekly downloads
 
Created
Source

@putout/plugin-types NPM version

🐊Putout plugin adds ability to help with transforming code related to types.

Install

npm i putout @putout/plugin-types -D

Rules

Config

{
    "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"
    }
}

declare

Based on @putout/operator-declare. Supported assertions:

  • isString;
  • isEmptyString;
  • isNumber;
  • isNumberLike - checks if a can be convert to Number from String;
  • isFn;
  • isBool;
  • isObject;
  • isUndefined;
  • isSymbol;
  • isNull;
  • isBigInt;
  • isArray;
  • isEmptyArray;
  • isError;

❌ Example of incorrect code

isString('hello');
isNumber('a' - 5);

✅ Example of correct code

const isString = (a) => typeof a === 'string';
const isNumber = (a) => !Number.isNaN(a) && typeof a === 'number';

isString('hello');

isNumber('a' - 5);

When you want to skip some declaration use dismiss:

{
    "rules": {
        "types/declare": ["on", {
            "dismiss": ["isString"]
        }]
    }
}

convert-typeof-to-is-type

The typeof operator returns a string indicating the type of the unevaluated operand.

(c) MDN

❌ Example of incorrect code

if (typeof a === 'boolean')
    return x;

✅ Example of correct code

const isBool = (a) => typeof a === 'boolean';

if (isBool(a))
    return x;

remove-useless-conversion

❌ Example of incorrect code

const a = !![1].includes(1);
const b = Boolean([1].includes(1));

✅ Example of correct code

const a = [1].includes(1);

remove-useless-constructor

Wrapper classes have surprising behaviour, such as new Boolean(false) evaluating to true.

(c) Google TypeScript Style Guide

🐊Putout plugin adds ability to remove useless constructor. Use with new/remove-useless.

❌ Example of incorrect code

const s = String('hello');
const b = Boolean(false);
const n = Number(5);

✅ Example of correct code

const s = 'hello';
const b = false;
const n = 5;

remove-double-negations

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 Boolean function.

(c) MDN

❌ Example of incorrect code

if (!!a)
    console.log('hi');

✅ Example of correct code

if (a)
    console.log('hi');

remove-useless-typeof

The typeof operator returns a string indicating the type of the unevaluated operand.

(c) MDN

❌ Example of incorrect code

typeof typeof 'hello';

✅ Example of correct code

typeof 'hello';

apply-is-array

The Array.isArray() method determines whether the passed value is an Array. When checking for Array instance, Array.isArray() is preferred over instanceof because it works through iframes.

❌ Example of incorrect code

x instanceof Array;

✅ Example of correct code

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);

License

MIT

Comparison

LinterRuleFix
🐊 Putouttypes
ESLintno-implicit-coercion

License

MIT

Keywords

putout

FAQs

Package last updated on 10 Apr 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts