Въвеждащо ръководство за способностите на Putout да декларира и обработва променливи по възможно най-простия начин!

Здравейте приятели!

Днес искам да ви разкажа за една полезна функция, която беше драстично подобрена.

operator.getBindingPath и декларации на променливи

Да започнем от примерния код:

const x  = {
   y: 'hello',
};
typeof hello === 'string';
typeof x.y === 'number';

Как определяте дали променливата hello е декларирана или не? Нека се опитаме да го разрешим.

Когато имате path като този, можете да използвате match в Replacer:

const {operator} = require('putout');
const {getBindingPath} = operator;
module.exports.match = () => ({
    'typeof __a === "__b"': ({__a}, path) => {
        // when __a declared proceed to replace
        return getBindingPath(path, __a))
    }
});

И когато искате да знаете дали възел __a е деклариран, можете да използвате getBindingPath и той ще реши това:

getBindingPath(path, 'hello');
// returns
null;
getBindingPath(path, 'x');
// returns
Path;

Но какво ще стане, ако не знаете какъв е типът node, който ще получите, но определено знаете, че имате нужда от име на това node, за да продължите? Просто предайте node и getBindingPath ще анализира името вместо вас :)!

getBindingPath(path, node); // node can be Identifier or MemberExpression
// parse the name first, and then find it's declaration
Path;

Нови способности на convert-typeof-to-is-type.

Сега convert-typeof-to-is-type поддържа MemberExpressions е добре:

const hello = {
    world: '',
};
// before:
typeof hello.world === 'string'
// after:
isString(hello.world);

И с помощта на declare-undefined-variables ще получите:

// a new declaration
const isString = (a) => typeof a === 'string';
const hello = {
    world: '',
};
isString(hello.world);

Използвайте и двете, за да получите най-голяма полза! 🎈 Те са активирани по подразбиране 😏.

Автоматични корекции за Includer

Когато използвате Includer и по някаква причина забравите, че изисква функция, която връща arrayputout/includer, ще ви помогне!

И такъв код:

module.exports.include = [
    'const __a = __b',
];

И дори такива:

module.exports.include = 'const __a = __b';

Ще бъде преобразуван в единствения правилен:

module.exports.include = () => [
    'const __a = __b',
];

☝️ За да работят нещата, активирайте правилото putout в .putout.json:

{
    "rules": {
        "putout": "on"
    }
}

Винаги използвайте възможно най-простия тип плъгин за вашите нужди 🍬.

Това е всичко за днес!

Повече съдържание в PlainEnglish.io. Регистрирайте се за нашия безплатен седмичен бюлетин. Следвайте ни в Twitter и LinkedIn. Присъединете се към нашата общност Discord.