Рекурсивные типы в TypeScript

  Рет қаралды 8,115

Михаил Непомнящий

Михаил Непомнящий

8 ай бұрын

TypeScript позволяет создавать сложные типы за счет рекурсии. Разбираемся от базового примера до реального практического применения. Создаем свою утилиту для GraphQL приложений.
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 35
@paemox
@paemox 8 ай бұрын
Ничего не ясно, но очень интересно.
@apyrkh
@apyrkh 8 ай бұрын
спасибо за видео, не знал о "-?" фиче, чтобы отменить необязательность - просто бомба
@antonmas3451
@antonmas3451 8 ай бұрын
а где можно почитать об этой "-?" фиче?
@vladimircreator
@vladimircreator 8 ай бұрын
@@antonmas3451в официальной документации как бы :/
@PowWowVideo
@PowWowVideo 8 ай бұрын
Можно вместо этого использовать util type Required
@artemj1
@artemj1 8 ай бұрын
Создание проблем и их героическое преодоление. Обмазываем нечитаемые портянки из GraphQL не очевидными реализациями Тайпскрипта) Представляю какой кайф это все поддерживать будет.
@from_brest2631
@from_brest2631 8 ай бұрын
Да все норм читаемо и пожжерживаемо. И не надо 100500 эндпоинтов 😂
@techbuterbrod
@techbuterbrod 8 ай бұрын
А каким образом тут создана проблема? Если в проекте необходим GraphQL и у него такой ответ, то какие еще варианты?
@Denis_Katelnikov
@Denis_Katelnikov 8 ай бұрын
Запросы вселенной работают)) только вчера искал видео про рекурсию типов))
@STELLS541
@STELLS541 8 ай бұрын
Очень круто и достаточно сложно конечно, чуть. Надо переварить пойти 😀.
@d_r_robot
@d_r_robot 8 ай бұрын
Всегда, только масса пользы, спасибо Михаил!
@pink-doublethink
@pink-doublethink 8 ай бұрын
Ролик огонь🔥 *Спасибо, что поделился* ❤
@denis7442
@denis7442 8 ай бұрын
Спасибо за понятные объяснения, как всегда огонь
@sergeyplotnikov4303
@sergeyplotnikov4303 8 ай бұрын
Очень круто! Спасибо большое!
@dmitriyanatolev2518
@dmitriyanatolev2518 8 ай бұрын
Привет Миш!Приятно тебя слушать ,купил у тебя курс по type script
@akad1981
@akad1981 8 ай бұрын
ВАу! Супер полезно, спасибо!
@ArtyomSamsonchik
@ArtyomSamsonchik 8 ай бұрын
Выглядит интересно. Непонятно, как это вообще работает. В такой реализации рекурсии нет механизма досрочного выхода, но тип все-таки вычисляется. Я предполагаю, что это заслуга встроенного ограничения на 50 рекурсивных вызовов в TS и еще какой-то магии) Ведь из примера в видео в какой-то момент в наш кастомный тип попадает значение по ключу "label", и получается NonNullableQuery. А это вычисляется как тип объекта String.prototype, который тут же опять попадает в наш кастомный тип и т.д., пока компилятор сам не остановится. Хз, если это не начнет со временем сильно лагать из-за неоправданного объема работы, то может вариант с таким типом и хорош. Но в MUI и Emotion вроде, где я видел рекурсивные типы, использовался conditional type (тернарник в TS) для досрочного выхода/продожления рекурсии. На Гитхабе тайпскрипта есть хорошее описание рекурсии в TS. Ищите PR Recursive conditional types #40002, закладка conversation.
@voytko1994
@voytko1994 8 ай бұрын
что-то на сложном) Порой с TS больше проблем чем бенефитов
@lLoseControll
@lLoseControll 8 ай бұрын
Классно, не знал про -? Да и в целом классный кейс, лайк
@kinofan_org
@kinofan_org 8 ай бұрын
Очень годный контент я скажу)
@user-rp6kj9jd1w
@user-rp6kj9jd1w 8 ай бұрын
Лучший!
@Infinity-zf8ms
@Infinity-zf8ms 8 ай бұрын
Спасибо
@someChicoRy
@someChicoRy 8 ай бұрын
круто)
@NeoCoding
@NeoCoding 8 ай бұрын
свят свят, такое попадётся 😄
@mango-milkshake
@mango-milkshake 8 ай бұрын
Михаил, есть такой важный вопрос: А получится сделать видео на тему деплоя своего проекта на реальный домен? Вот допустим, я создал на React/NextJS сайт-портфолио, залил его на Vercel. Но мне хочется короткое и понятное доменное имя и всё в таком духе. Хотелось бы разобраться как это всё работает И отдельно хотелось бы понять, как на Vercel делаются кастомные домены. Я так и не понял, как правильно это настраивать. Спасибо!
@user-ku2hc3mr3m
@user-ku2hc3mr3m 8 ай бұрын
Мне кажется Microsoft должны описать этот способ в документации по TS. Это точно должно быть best practice
@user-qn7ph3ft7h
@user-qn7ph3ft7h 8 ай бұрын
Подскажите легко ли будет перенести сайт с React на Next.JS, если сайт сначала сделать на React? просто говорят на 10+т дороже сделать на Next.JS
@user-gb9et7dk2r
@user-gb9et7dk2r 3 ай бұрын
Поясни пжлст почему не использовать graphql fragment в связке с генератором типов? Т.е. ты создаешь схему в схеме создаешь fragment, генеришь типы и получаешь готовый интерфейс ответа graphql query через fragment?
@mishanep
@mishanep 3 ай бұрын
Оно так и работает, только тип фрагмента по специфике идёт с null и undefined на каждом шаге. А на уровне компонента я могу ожидать данные с постобработкой.
@antonmas3451
@antonmas3451 8 ай бұрын
а где можно почитать об этой "-?" фиче? не могу найти в handbooke тайпскрипта
@mishanep
@mishanep 8 ай бұрын
Я тоже не находил =) Скорее всего в блоге Майкрософт, где они публикуют информацию о каждой новой версии TS. Но я навскидку не скажу, когда такая штука появилась.
@Toookes
@Toookes 8 ай бұрын
А результат запроса случайно не из strapi?)
@mishanep
@mishanep 8 ай бұрын
Нет :)
@applied_maths
@applied_maths 8 ай бұрын
Рекурсивный фильтр
Infer is easier than you think
13:38
Matt Pocock
Рет қаралды 85 М.
Mapped Types - Advanced TypeScript
12:16
Dmytro Danylov
Рет қаралды 42 М.
3 wheeler new bike fitting
00:19
Ruhul Shorts
Рет қаралды 40 МЛН
【VITE】plugin 插件 SVGR
7:35
全栈码叔
Рет қаралды 92
TypeScript generics или универсальный типы, обобщения
23:51
Михаил Непомнящий
Рет қаралды 33 М.
Расширенные типы в TypeScript
0:57
RED Group
Рет қаралды 6 М.
Как ловить ошибки в JavaScript коде
14:24
Михаил Непомнящий
Рет қаралды 11 М.
Урок 5. JavaScript. Promise. Что это, как работает (+ пример)
23:18
How charged your battery?
0:14
V.A. show / Магика
Рет қаралды 6 МЛН
5 НЕЛЕГАЛЬНЫХ гаджетов, за которые вас посадят
0:59
Кибер Андерсон
Рет қаралды 1,6 МЛН
Cadiz smart lock official account unlocks the aesthetics of returning home
0:30
APPLE совершила РЕВОЛЮЦИЮ!
0:39
ÉЖИ АКСЁНОВ
Рет қаралды 1,7 МЛН