Въвеждащо ръководство за способностите на 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.