Радость объекта и разрушения массива, скорее всего, вам известна (проверьте пример ниже, если это не 🙂). Но как насчет радости возможности выбирать между ними при использовании ту же функции? Как увлекательно это будет!?
Подожди, но почему? Ну, потому что у каждого есть свои эпохии, и обычно нет достаточно хорошей причины, чтобы заставить разработчику использовать один из них по дизайну. Разрушивание массива позволяет вам более кратко переименовать переменные переменные, но требует запоминания заказа, а деструктурирование объектов заставляет вас запомнить название, но не возражает против заказа.
Что такое деструктурируют объект и массив?
// object destructuring const o = { firstN: 'Plants', v: 'need', secondN: 'water' } const {firstN, secondN} = o; console.log(secondN); // water // array destructuring const a = ['Plants', 'need', 'water']; const [firstNoun, verb] = a; console.log(firstNoun); // Plants
Это сжатый способ получить переменные из более сложного типа. Легко использовать и легко читать. При использовании адекватно. И для того, чтобы максимизировать вероятность того, что они действительно используются правильно, вы можете отложить выбор, для которого из них используется, позволяя как возвращать из ваших функций. Так же, как UseInView () React Club Что вдохновило меня, чтобы написать это.
Сначала в чистом JavaScript:
const veryImportantSelfContainedLogic = (n) => { const result = ['Plants', 'need', n, 'waters']; result.firstWord = result[0]; result.anotherWord = result[1]; result.notAWord = result[2]; result.lastWord = result[3]; return result; };
А затем в Teadycript (настоятельно рекомендуется, если вы еще не сделали переход):
type VeryImportantSelfContainedLogicResponse = [string, string, number, string] & { firstWord: string; anotherWord: string; notAWord: number; lastWord: string; }; const veryImportantSelfContainedLogic = ( n: number = 5 ): VeryImportantSelfContainedLogicResponse => { const result = ['Plants', 'need', n, 'waters'] as VeryImportantSelfContainedLogicResponse; result.firstWord = result[0]; result.anotherWord = result[1]; result.notAWord = result[2]; result.lastWord = result[3]; return result; };
Затем разработчик, использующий вашу функцию, может выбирать, какой тип реструктуризации в зависимости от их настроения (или некоторых других соображений, если кто-то находит более важно):
// decided to rename the second variable in comparison to the function author's intention const [firstWord, secondWord] = veryImportantSelfContainedLogic(3); // has to follow the naming const {firstWord, anotherWord} = veryImportantSelfContainedLogic(5); // or redefine it like so const {firstWord, anotherWord: secondWord} = veryImportantSelfContainedLogic(5);
Аккуратный, не так ли? ☀️.
Дайте мне знать в комментариях, если вы видите какие-либо недостатки в поддержке вымогательного разрушения по умолчанию или если вы все в идее 🤓
Оригинал: “https://dev.to/m3h0w/supporting-choiceful-destructuring-object-and-array-in-javascript-and-typescript-22a6”