Продвинутое использование дженериков в TypeScript

Поделиться
HTML-код
  • Опубликовано: 8 июн 2024
  • В данном видео поговорим про продвинутое использование дженериков в TypeScript. Рассмотрим, как с помощью них можно типизировать сложные с кейсы в коде. Также в конце поговорим про новый функционал, добавленный в версии 4.7.
    Видео про type guards:
    • Как использовать unkno...
    Код из видео и слайдов:
    github.com/Ayub-Begimkulov/yo...
    Ссылка на Telegram канал:
    telegram.me/ayub_begimkulov_c...
    Таймкоды:
    00:00-00:49 - Интро
    00:49-02:44 - Что такое дженерики?
    02:44-05:17 - Ограничения для дженериков
    05:17 -07:26 - Совет при использовании дженериков
    07:26-09:25 - Завязка дженериков друг на друга
    09:25-12:43 - Type gurad + дженерики
    12:43-14:35 - Обертка над filter
    14:35-17:27 - Дженерики в React компонентах
    17:27-19:08 - Новый функционал передачи дефолтных значений
    19:08-26:17 - Новый синтаксис для дженериков
    26:17-28:45 - Пример с новым синтаксисом
    28:45-29:07 - Заключение

Комментарии • 88

  • @user-vm2db5cq1g
    @user-vm2db5cq1g Год назад +4

    Супер! Лучшее видео по разбору дженериков, больше половины из ролика вообще нигде на других каналах не видел, Спасибо!

  • @romanryaboshtan9270
    @romanryaboshtan9270 7 месяцев назад

    Аналога этого видео больше нет на просторах рунета, подробнейшее объяснение, раньше ничего подобного вообще не видел!!!

  • @user-ex9ju3sz2x
    @user-ex9ju3sz2x Год назад +10

    Интересный момент про запятую в JSX, не знал этого. Спасибо👍

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +1

      Я даже не думал, что кто-то уделит отдельное внимание этому. Спасибо за фидбэк!

    • @_GyG_
      @_GyG_ Год назад +2

      @@ayub_begimkulov я тоже долго мучался с этим, но стак оверфлоу наше всё)

    • @aipronator
      @aipronator Год назад

      Этот момент не раз отталкивал исползовать дженерики в компонентах Реакт)

    • @user-vm2db5cq1g
      @user-vm2db5cq1g Год назад

      реально это была проблема))) спасибо за такой маленький, но очень важный нюанс)

  • @givgiv6688
    @givgiv6688 Год назад +2

    У тебя лучшие видео про ts, удачи твоему каналу 😊

  • @shadowplay1211
    @shadowplay1211 7 месяцев назад

    лучший разбор дженериков на всём ютубе, спасибо тебе, очень много нового узнал)

  • @rizemun
    @rizemun 8 месяцев назад

    Спасибо за хороший контент

  • @kirillboychenko7724
    @kirillboychenko7724 Год назад +1

    спасибо большое аюб за твои видосы!

  • @narek1771
    @narek1771 Год назад +3

    Спасибо за труд с помщю твоих видео я стал лучше понимать typescript хорошо обясняешь еще и примеры очень разясняют

  • @gazdhikhartumov1159
    @gazdhikhartumov1159 Год назад +1

    лучшее видео про объяснение дженериков )

  • @vladosk-lv6kp
    @vladosk-lv6kp Год назад +1

    Отличный контент, спасибо тебе! Больше видео по тс)

  • @romanryaboshtan9270
    @romanryaboshtan9270 7 месяцев назад

    Канал тотальной годноты, по своей ценности очень похож на ulbi tv, уровень экспертности автора поражает, да, здесь есть чему поучиться middle разрабам!!!

  • @andreylobanov4983
    @andreylobanov4983 Год назад +1

    очень круто объяснил про in out

  • @johnd1431
    @johnd1431 8 месяцев назад +1

    Довольно информативно получилось

  • @malsagov6331
    @malsagov6331 Год назад +1

    Контент огонь! 🔥

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 Год назад +1

    👀👀👀, мощный ролик. 👍👍👍

  • @WebEnv
    @WebEnv Год назад +1

    Супер❤ Давай про infer тогда ещё!

  • @user-kf1gz7xg1c
    @user-kf1gz7xg1c Год назад +1

    Как я помню in, out есть в PL/SQL. Очень полезное видео, спасибо😃👍🏼

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Прикольно, даже не знал об этом.

  • @LevShuroff
    @LevShuroff Год назад +3

    Топовый канал, уверен, что он будет рости. Автору большой респект

  • @alexanderkomanov4151
    @alexanderkomanov4151 Год назад +1

    Спасибо!

  • @anton7p704
    @anton7p704 Год назад +1

    крутой контент

  • @mercury_2379
    @mercury_2379 Год назад +1

    комментарий в поддержку канала

  • @dfkadyr
    @dfkadyr Год назад +1

    Спасибо

  • @kirillpodolinniy309
    @kirillpodolinniy309 Год назад +1

    Аюб, спасибо за видео) Что у тебя за наушники?

  • @_GyG_
    @_GyG_ Год назад +3

    Привет! Спасибо за полезную инфу! Можно чуть медленнее и более "разжевывать" для чайников?) Я бы лучше два получасовых ролика посмотрел, чем один в твоей скорости х1.5))

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +3

      Привет. Хорошо, постараюсь, в следующем видео улучшить эти моменты. Спасибо за обратную связь!

  • @jgkdmdevienjjgg8866
    @jgkdmdevienjjgg8866 Год назад +2

    in out из C# стащили. Там это юзалось для generic интерфейсов, тесно связано с covariance/contravariance/invariance. В ts вывод типов поумнее, по этому как-то оно сходу и не нужно было, но видимо добавили для специфичных случаев когда оно само разрулить не может. Мутная тема конечно, плохо запоминается

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Кто-то тут еще говорил, что in out из sql взяли. Так вообще согласен, что плохо запоминается по началу.

  • @chistyakofff
    @chistyakofff 10 месяцев назад

    Привет! Можешь подсказать по примеру на 13:51, не понятны 2 момента. 1-ый: почему параметры функции predicate: index, originalArray здесь описаны и они обязательные, хотя в isNumber мы принимаем только value и в build-in функции filter эти параметры необязательные . И 2-ой вопрос: в чём конкретное различие FilteredItem и Item, ведь в конечном итоге FilteredItem просто расширяет Item и они оба имеют один тип. PS: спасибо за контент!

  • @rustam_gasymov
    @rustam_gasymov Год назад +1

    Слушай, как у тебя vscode тип подсвечивает? Это расширение или ты на видео накладываешь?? Спасибо

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      marketplace.visualstudio.com/items?itemName=Orta.vscode-twoslash-queries

  • @raijinhasarrived
    @raijinhasarrived Год назад +1

    14:30 кайфово

  • @web__dev
    @web__dev Год назад

    Спасибо за видео, только вот новый синтаксис вообще запутанно как-то, с этими бейсами, спицификами))

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +1

      Сама фича вообще сложная, нужно иметь какой-то бекграунд с похожими проблемами, чтобы все это понять. Спасибо за фидбэк!

  • @romanryaboshtan9270
    @romanryaboshtan9270 7 месяцев назад

    hi, можешь помочь с типом??? Я на проекте понаписывал кучу разных типов, но с одним кое-что не получается, но так объяснить не могу, нужно показывать код...

  • @Sengulair
    @Sengulair Год назад +1

    3:30 С версии Typescript 5.0 можно использовать const прямо в дженерике объявления функции

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Да, это классная фича. Спасибо, что поделился!

  • @user-tv5jr3rx1i
    @user-tv5jr3rx1i 8 месяцев назад

    отличная информация , но только быстро говоришь не успеваю уловить иногда

  • @borisfred7192
    @borisfred7192 Год назад

    Давай уже курс свой создавай)

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Думаю запущу как-нибудь, пока только коучингом/консалтингом/менторингом занимаюсь.
      А на какую тему хотел бы увидеть курс?

  • @amangeldi3424
    @amangeldi3424 Год назад

    Чел просто шарит за то что говорит

  • @artemivanov5013
    @artemivanov5013 Год назад +1

    Скажите пожалуйста в чем разница между:
    (value:T) => и
    (value: string) =>
    если знаем что тип стринг, зачем дженерик?

  • @just__did__it
    @just__did__it Год назад +1

    У тебя своя студия? Когда следующий трек?

  • @mikeempire
    @mikeempire Год назад

    Посмотрел предыдущее видео, все круто, перешёл на это и чёт не понимаю ничего, Айюб говори чуть помедленнее, очень сложно успевать за твоими мыслями)

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +1

      Ок, постараюсь исправить в следующем видео. Спасибо за фидбэк!

  • @user-wq9oy7hx6z
    @user-wq9oy7hx6z 7 месяцев назад

    13:40 автор похоже просто скопировал выведенный тип из нативной filter? 😁 Там достаточно и такого объявления дабы не перегружать синтаксис:
    function myfilter(
    arr: Item[],
    predicate: (value: Item) => value is FilteredItem
    ) {
    return arr.filter(predicate)
    }
    Тем не менее благодарю - почерпнул из видео полезного для себя! Не знал про такую особенность применения тайпгардов!

  • @kostya3312
    @kostya3312 Год назад +1

    типЫ - это на районе которые?

    • @mikeempire
      @mikeempire Год назад

      Да

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Постараюсь в след видосах больше обратить на это внимание. Спасибо за фидбэк!

  • @raijinhasarrived
    @raijinhasarrived Год назад +1

    Рахмэт

  • @igor_ni
    @igor_ni Год назад

    Мозги кипят! 😀

  • @ferdinandkontr1451
    @ferdinandkontr1451 Год назад

    друг а ты можешь запилить гайды по каждому разделу handbook тс доки?

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Доку пересказывать, к сожалению, не вижу смысла) Покрываю только те темы, которые считаю реально полезными и нужными. Но думаю в плейлисте большую часть тем разберем так или иначе.

  • @user-te9ci1tx4x
    @user-te9ci1tx4x Год назад +6

    можно помедленнее ?)

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +4

      Спасибо за фидбэк! Постараюсь в следующий раз не торопиться так сильно, а пока можно поставить 0.75 скорость)

    • @_GyG_
      @_GyG_ Год назад +2

      @@ayub_begimkulov посади медленно говорящего джуна, пусть переозвучивает, заодно и сам разберется, пока вникает во всё это))

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +1

      @@_GyG_ Мне кажется так сложнее будет, так как он может упустить моменты) Да и в целом самому надо софт скиллы качать.

  • @johnenglish5898
    @johnenglish5898 9 месяцев назад

    ты откуда ?

  • @user-hp2cg6px8c
    @user-hp2cg6px8c Год назад +1

    Ставь бейз если понял про in/out
    Ставь specific, если не понял ничего

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Вроде в комментах количество specific не показывается)

  • @drevitsky
    @drevitsky 8 месяцев назад

    Сильно тарахтишь, говори членораздельно.