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

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ธ.ค. 2024

ความคิดเห็น • 64

  • @2difficult2do
    @2difficult2do ปีที่แล้ว +1

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

  • @samurai5410
    @samurai5410 ปีที่แล้ว +2

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว +1

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

  • @dimasheiko
    @dimasheiko ปีที่แล้ว +3

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

  • @raff_m_d6971
    @raff_m_d6971 ปีที่แล้ว +2

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

  • @mmordoboy
    @mmordoboy ปีที่แล้ว +1

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

  • @lLoseControll
    @lLoseControll ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

      Рад, что понравилось!

  • @НикитаШевченко-ы8я
    @НикитаШевченко-ы8я ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

      Рад, что было полезно.

  • @igorgolub2385
    @igorgolub2385 ปีที่แล้ว +1

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

  • @РемонтСервисЧерноморск
    @РемонтСервисЧерноморск ปีที่แล้ว +4

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

  • @mercury_2379
    @mercury_2379 ปีที่แล้ว +1

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

  • @ДинисламКараев-с2ю
    @ДинисламКараев-с2ю ปีที่แล้ว +3

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

      Спасибо за поддержку!

  • @_oxios_
    @_oxios_ ปีที่แล้ว +2

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

      Рад, что было полезно!

  • @роматарасов-о8л
    @роматарасов-о8л ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

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

  • @Максим-д1у4щ
    @Максим-д1у4щ ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

      Спасибо за поддержку!

  • @yaroslavs2271
    @yaroslavs2271 ปีที่แล้ว +5

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

  • @ИльяПономарев-г4у
    @ИльяПономарев-г4у ปีที่แล้ว +1

    Спасибо!

  • @ilyagamepub
    @ilyagamepub ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว +1

      Рад, что понравилось!

  • @alekseyleha9942
    @alekseyleha9942 ปีที่แล้ว +1

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

  • @romanryaboshtan9270
    @romanryaboshtan9270 ปีที่แล้ว

    мощно, да

  • @dfkadyr
    @dfkadyr ปีที่แล้ว +1

    Спасибо

  • @АнатолийГорбов-о1ь
    @АнатолийГорбов-о1ь ปีที่แล้ว

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

  • @АнатолийГорбов-о1ь
    @АнатолийГорбов-о1ь ปีที่แล้ว

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

  • @SnegurkaBu
    @SnegurkaBu ปีที่แล้ว +5

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว +1

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

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว +1

    👏👍

  • @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.

  • @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 в любой компонент. Не покажешь пример, где это не работает?

  • @anton7p704
    @anton7p704 ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

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

  • @apanchuk
    @apanchuk ปีที่แล้ว

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

  • @levsonc
    @levsonc ปีที่แล้ว

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

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

  • @SuleimanAliiev
    @SuleimanAliiev ปีที่แล้ว +1

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

    • @ayub_begimkulov
      @ayub_begimkulov  ปีที่แล้ว

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

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 ปีที่แล้ว

    😳🚑🚑🚑🚒🚒🚒👍👍👍

  • @antonarbus
    @antonarbus ปีที่แล้ว

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

  • @anatoliiilescu839
    @anatoliiilescu839 ปีที่แล้ว +1

    Wow super content about TypeScript and React! ❤