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

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

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

  • @2difficult2do
    @2difficult2do Год назад +1

    Спасибо за полезную информацию и качественный ролик со ссылками и таймкодами.

  • @НикитаШевченко-ы8я

    очень крутая инфа, спасибо!

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

    Лайк автоматом, хоть и выбрал backend на js

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

    Оч крепко. Сложно, но интересно) спасибо

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

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

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

    Сначала лайк, потом смотреть)

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

      Я тоже всем рекомендую так делать!)
      Спасибо!

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

    Лайк поставил, посмотрю позже) Спасибо за контент!

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

    Огромное спасибо!

  • @РемонтСервисЧерноморск

    Автор молодчага, все доступно объясняет. Желаю процветания каналу.

  • @Максим-д1у4щ
    @Максим-д1у4щ Год назад +1

    Большое спасибо! Лучший!

  • @ДинисламКараев-с2ю

    Ещё не смотрел, но автору большое Спасибо за его работу

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

    Спасибо за урок. Много нового и полезного для себя открыл)

  • @yaroslavs2271
    @yaroslavs2271 Год назад +5

    Делаешь крутой и полезный контент! Успехов тебе и нескончаемого потока мотивации😊

  • @роматарасов-о8л
    @роматарасов-о8л Год назад +1

    этот плейлист просто огонь, показываешь много нового, даже при том что 2 года на тайпскрипте пишу уже
    насчёт хака с memo и forwardRef, всё конечно правильно
    но лучше не создавать функцию typedMemo
    а переопределить через declare тип у функции memo из React
    переопределять через declare типы из библиотек это нормальная практика,
    это необходимо например в tanstackRouter-е для полного инфера типов всех твоих роутов

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

      Я лично не люблю через declare перезаписывать. Но вариант тоже рабочий.

  • @ИльяПономарев-г4у
    @ИльяПономарев-г4у Год назад +1

    Спасибо!

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

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

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

    Спасибо, ты большой молодец

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

    Крутой видос, вроде и работаю достаточно долго с тайпскриптом, но как-то не задумывался до этого момента о подобной типизации

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

    Спасибо

  • @АнатолийГорбов-о1ь

    Аюб контент просто ТОП! Спасибо) а по реакт хук форм что-нибудь с продвинутыми кейсами + типизация не планируешь снять?) было бы очень интересно посмотреть))

  • @SnegurkaBu
    @SnegurkaBu Год назад +5

    Спасибо за интересный ролик, кстати, мне кажется в видео не совсем классическое использование RenderProps, обычно функцию передают не как children, а как проп функцию, внутри самого тега. Было очень интересно увидеть новую для меня реализацию (function as children), и вообще тема паттернов очень интересна, с удовольствием бы посмотрела видео с их практическим применением.

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

      Да, обычно под render prop подразумевают передачу функции именно в пропсы, но с children, как мне кажется удобнее. Про видео по паттернам - записал себе, нужно будет заснять.

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

    мощно, да

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

    👏👍

  • @АнатолийГорбов-о1ь

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

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

    Спасибо за видео!
    Пробовал описанный в видео компонент Button использоватьт с next/link? Home

  • @o.korsakov4426
    @o.korsakov4426 Год назад +2

    Если необходимо передать дженерики в компонент обернутый React.memo использую type casting - "export default memo(SomeComponent) as typeof SomeComponent;"

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

      Так тоже можно)

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

      Дело в том, что memo(SomeComponent) и typeof SomeComponent это разные вещи, ты пытаешься один тип перевести в другой, которым он не является, если используешь as, это принудительное приведение типа, в том то и смысл, чтобы работать с typescript без принудительного приведения типа по тем правилам, которые заложены в саму концепцию ts.

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

    крутое видео, а можешь какие нибудь кейсы интересные из тестирования разобрать?

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

      Записал себе, постараюсь сделать скоро!

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

    22:06 имхо, для кнопки лучше брать сразу реактивский тип `ButtonHTMLAttributes`, из `Pick`ать из него только нужные атрибуты, чтобы подсказок в пропсах было немного (коллеги могут растеряться от обилия их).
    30:16 а для кнопок, которые семантически выполнят роль ссылки я обычно от `[href]` решаю чем ей быть, а не делаю пропс `as`. Просто если это ссылка, то обычно внутри нужно решать это внешняя ссылка или внутренняя и если внутренняя то оборачивать ещё в компонент роутера на проекте (`react-router-dom` или `Next.js` к примеру)

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

      Тут на самом деле нету правильного/неправильного подхода. Все зависит от ситуации.
      Многие ui библиотеки берут все из пропсов нативных элементов (button, div etc.), так как кейсы могут быть разные. Если что-то локальное, то можно и пикать, не знаю, будет ли это проблемой, если много подсказок?.
      По поводу пропса `as` - я не говорю, что это нужно делать. Понятное дело, что у всего есть свои плюсы и минусы. Однако я думаю для универсальной библиотеки компонентов - это не плохое решение.
      В данном случае цель была описать именно типизацию определенного подхода, а использовать его или нет - тема совсем другая)

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

    Обернул компонент в HOC. Потом использую его в рендеринг списка, и проп key в нём уже отсутсвует. С точки зрения типизации.
    Спасибо за контент.

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

      Хммм, вот это странно. Ты же можешь передать key в любой компонент. Не покажешь пример, где это не работает?

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

    интересно почему не предусмотрены эти компоненты обертки с под коробки для консистентности мемо и форвард рефов: вроде распространенный кейс

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

      Так как типизация react поддерживается комьюнити, а не самой командой.

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

    У обходных решений с memo и forwardRef есть фатальный недостаток: не будет типизации свойств компонента вроде displayName. И это никак не обойти. А displayName очень полезен для отладки. Суть проблемы же в том, что сами по себе forwardRef с memo типизированы через унаследованные интерфейсы, а Тайпскрипт не поддерживает дженерики в таком случае (мол, дорого считать). И если с memo можно просто привести тип, то вместо forwardRef лучше использовать отдельное ref-свойство вроде innerRef. По этой же причине нет смысла переопределять их типизацию глобально, а то и вообще переопределять.
    С типизацией useRef всё очевидно: основное его использование - это получение ссылки на html-элементы, поэтому сделали такую типизацию, что при null в значении по умолчанию ТС не давал бы его случайно переопределить. Впрочем, мне это никогда не помогало.

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

      А почему никак не обойти? Можно же руками добавить эти свойства к фукнции в return type. Просто в видео я этот момент не рассмотрел.
      Вот ссылка на плейграунд с примером - tsplay.dev/wO1olm

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

    😳🚑🚑🚑🚒🚒🚒👍👍👍

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

    понял процентов 10% :(

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

    Wow super content about TypeScript and React! ❤