3 вещи для написания сложной TypeScript типизации

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

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

  • @darkside2436
    @darkside2436 ปีที่แล้ว +6

    Хороший контент. Идеально подходит для тех кто хочет быстро изучить Typescript или повторить забытые вещи. Продолжай в том же духе. Желаю удачи.

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

    мощнейшее видео, лучший контент по TS на просторах рунета

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

    афигеть за первые 5 минут видоса увидел столько откровений
    именно такой видос обьясняющий неочевидные механики я ждал
    возможно аюб не прочитает мой коммент под прошлым видосом поэтому продублирую здесь:
    "вместо того чтобы создавать функцию typedMemo, можно через ключевое слово declare перетипизировать memo из React"

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

      А я по-моему под прошлым ответил уже)
      По поводу overwrite'а типизации - я просто не люблю так делать, но способ тоже рабочий.

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

    как всегда отлично, продолжай!

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

    Как всегда по красоте раскидал, спасибо.

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

    Спасибо(Очень:нужное):видео

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

      let рад: что = "понравилось";

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

    Спасибо! как всегда круто

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

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

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

    Очень круто, узнал много нового. Спасибо!

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

    Спасибо, с каждым видео становится понятнее.

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

      Круто, что есть прогресс!

  • @МарияЧерешня-у2й
    @МарияЧерешня-у2й ปีที่แล้ว +1

    Давай, вперёд во благо!

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

    Спасибо за познавательный контент!

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

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

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

    Прикольное видео про задачки, спасибо!)) а можно еще?)

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

      Спасибо за фидбэк! Да, можно попробовать еще сделать.

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

    Продвигаем

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

    👏👍

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

    Очень классное видео, только вот совсем непонятно, зачем такие сложные типы нужны) пока что не приходилось на работе с таким сталкиваться. Надеюсь, разберусь, чтобы потом вернуться еще раз к видео и понять всё

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

      Вот да, прикольно узнавать, что так можно писать, но зачем это нужно? Когда это нужно? Хотелось бы увидеть примеры использования, потому что обычно такой необходимости нет

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

      Ну если есть вопрос зачем - то тогда они и не нужны. Однако примеров много, зачастую они связаны с чем-то нестандартным - Маппинг токенов для темы, библиотеки, и тд.

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

    ❤🎉

  • @evgeniymarkitan862
    @evgeniymarkitan862 ปีที่แล้ว +11

    Лучший контент по TS на русском языке❤‍🔥❤‍🔥❤‍🔥

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

    Центральный Typescript учебник!

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

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

  • @Дмитрий-л3я7ы
    @Дмитрий-л3я7ы 9 หลายเดือนก่อน

    Спасибо за видос, всё более менее понятно (не совсем только понял этот синтаксис {...}[keyof T] в теме mappedType -> union. По ходу надо просто запомнить эту конструкцию, логически я ее хоть убей не понимаю, как она строится и почему после объекта идут квадратные скобки с keyof T).
    Еще, подскажите, как сделать union не массивов, а объектов, причем чтобы в качестве ключей объектов в union нужно использовать существующие ключи в изначальном mappedType. То есть, сделать из
    type o = {
    a: string,
    b: number,
    c: boolean
    }
    такой union
    { a: string } | { b: number } | { c: boolean }
    Попробовал так
    type res = {
    [K in keyof T]: { K: T[K] }
    }[keyof T]
    но он воспринимает K не как переменную, а как литеральный ключ. Заранее спасибо)

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

    Goood!

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

    го видос по диклорациям в ts. Важная тема

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

      У меня есть в списке, правда кажется, что людям поднадоел чуть плейлист этот. Постараюсь выпустить в ближайшее время.

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

    Хорошее видео, но не хватает примеров из реальных задач со сложной типизацией

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

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

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

    Как сделать чтобы // ^? работал

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

    А почему если использовать в DeepReadonly тип Record, а не Record то он не пропускает кейс с функциями?

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

      Точный ответ я не знаю, но это деталь TS, если ты пишешь Record - то это любой непримитив.
      А если Record то у тебя должен быть index signature - то есть возможность писать/читать в любые ключи, что соответствует только объекту.

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

    Интересно было бы узнать, почему так забавно в "ffoooobarbar" расколбасило в граничном кейсе на 29:24.

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

      Да все просто:
      Так как у нас From пустая строка и подстроку найти не удалось, то идем с самого начала. Start не может быть пустой, при условии, что исходная строка не пустая, то запись `${infer Start}{From}${infer End}` можно интерпретировать как 'f' + '' + 'oobarbar'. И дальше уже все понятно. А вот если бы была запись вида `{From}${infer End}`, то тогда бы foo встала в самое начало и было бы foofoobarbar

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

      @@fayster91 Спасибо, понятно. Правда основано на утверждении, "Start не может быть пустой" - это самый неоднозначный момент, который, походу, можем вывести только эмпирически, если не лезть в исходники TS. Хотя может и в доках где написано, но сомнительно.

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

      Мне кажется тут есть какой-то странный механизм того, как TS матчит эти строки. Детально я прямо не скажу, почему так).

  • @АндрейЯсновский-г5э
    @АндрейЯсновский-г5э ปีที่แล้ว

    Здравствуйте, начал обращать внимание на типы в библиотеках и стал часто видеть такое
    interface IExamole1 {
    should: IFunctions;
    }
    И самое не понятно для меня это interface IFunctions {
    (arg1: “be.have”, type: string): any
    }
    И вызвав функцию с типом IFunctions можно параметры выбирать из arg1, а не просто передавать строку…Будьте добры, объясните как же это работает
    Пример из cypress взят)

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

      Если я тебя правильно понял, то весь смысл заключается в том, что в TS есть литеральные типы. То есть не просто строка, а конкртно "a" | "b" | "c". То есть, если ты передашь туда "asf" - то это будет не правильно.
      Так вот, когда ты юзаешь литеральные типы, то ТС тебе будет сам подсказывать возможные варианты.

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

    Вроде всё и понятно, но не понятно где это применять в реальных проектах, не хватает примеров для таких людей как я. )

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

    Такие вещи нельзя так быстро преподносить, типичная ошибка блогеров передающих сложную информацию. Лучше медленней и с примерами. А контент отличный!

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

    Классно, но очень быстро

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

      Постараюсь по медленнее в следующий раз.

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

    Про infer все равно непонятно

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

      Я бы посоветовал потыкать самому на примерах, тогда должно дойти.