Typescript - Generics, Index Access Types, Keyof на простом примере

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ก.ย. 2024

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

  • @PurpleSchool
    @PurpleSchool  2 ปีที่แล้ว

    Для тех, кто хочет больше разобраться в TypeScript я подготовил полный курс: purpleschool.ru/course/typescript

    • @svet0v
      @svet0v 2 หลายเดือนก่อน

      Failed to load resource: the server responded with a status of 429 ()

  • @СержИгрун
    @СержИгрун 2 ปีที่แล้ว +10

    Считаю, самым лучшим лектором именно Вас Антон так как в инэте очень много не нужной воды.
    У вас все по существу без лишних движений . Купил все ваши курсы и не жалею , очень абгрейдился...

    • @PurpleSchool
      @PurpleSchool  2 ปีที่แล้ว

      Спасибо большое! Рад, что мои курсы приносят пользу)

  • @suslikest3708
    @suslikest3708 24 วันที่ผ่านมา

    Выглядит на первый взгляд сложно, но объяснили отлично и все теперь выглядеть стало просто и логично👍

    • @PurpleSchool
      @PurpleSchool  24 วันที่ผ่านมา

      @@suslikest3708 👍

  • @VitaliySunny
    @VitaliySunny 4 หลายเดือนก่อน

    Вот это магия. Круть!

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

    Спасибо, это самое понятное объяснение!

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

    Отличное объяснение. Спасибо.

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

    кайф, очень нравятся твои объяснения

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

    Очень полезно, как раз искал подобное!

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

    ОФигенно подан контент!! Лайк!

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

    Большое тебе человеческое спасибо!

  • @romanryaboshtan9270
    @romanryaboshtan9270 11 หลายเดือนก่อน

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

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

    Офигенно!

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

    Это было так хорошо, что я расплакался

  • @whhhhitee
    @whhhhitee 2 ปีที่แล้ว

    Очень красиво и доходчиво. Спасибо! Подписался

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

    Классно объясняешь ) хапанул пару курсов )

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

      Супер) Напиши потом в чате как впечатления)

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

    Нравятся видео про ts

  • @sergeyplotnikov5031
    @sergeyplotnikov5031 2 ปีที่แล้ว

    Очень крутое объяснение

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

    Видео топ, спасибо

  • @АндрейСорокин-ь6ъ
    @АндрейСорокин-ь6ъ 2 ปีที่แล้ว

    на ютубе очень не хватает контента для не новичков, спасибо!)

    • @PurpleSchool
      @PurpleSchool  2 ปีที่แล้ว

      Спасибо!

    • @nezhno-lw1mm
      @nezhno-lw1mm ปีที่แล้ว

      только эта инфа для новичков..

  • @xdarkfenixx
    @xdarkfenixx 2 ปีที่แล้ว

    Антон, а можно разбор более интересного кейса, в котором параметры первого уровня вложенности могут быть опциональными? К примеру пункт на уровне design это Record, или может быть просто опциональным. Чуть позже могу сделать пример в какой нибудь песочнице

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

      Можно так:
      function getMenu(
      obj: T,
      l1: L1,
      l2?: L2,
      ) {
      if(!l2) {
      return obj[l1];
      }
      return obj[l1][l2];
      }

    • @xdarkfenixx
      @xdarkfenixx 2 ปีที่แล้ว

      @@PurpleSchool я имел в виду что то примерно вот такое www.typescriptlang.org/play?#code/KYOwrgtgBA0sCeBnAouaBvAUFHUBiA8gVALxQBEAZgPbXkA02uAQgIIBKpFARgIYBO5TAF9MmAJYgALsH6VeAY2BQC3AFbAFUqFlxQp8AA7AAXFERT+kgOaM9AbThJUkAHSECAXQD8ZvLSYcRwQUNFc2dh8zZgERMUkZOUVlAEkAZSleGR1AqEczNG5ZTzNVDS04iWlZeSV8Why9CGp+YAAVAAtQAsgi-lyAG2BERE7uqELZXOAARzBeAcQeiD64hJrkqBj+RtwIXkQAazMLKxBrXNbrYAAPE8sbabmFpfMH88qFahALN6zTKDpTLZMi6XAARjMYL0OAMxjM5BkNykDFyeho1ChaJhOFm80WZnBdhxMOarTGIDMACZiSTcEMRhSzAAGbE4UR6USiTBfH7aa5SAAiwGAhgACvxqMZ+AZSLkADxpKC3GQgAAmiEBGX+tJhADllcjQBqJr1ZLq9GLwYbVSanKFIBbcGKqTbjZrDghqJQoHrvnqwAMBrxuEN5WVNFIAHz2K2eKNsqAACgs-zMaXoUHEarMesznvgkKgVvzCCpZhdAEpSupI7HwZ5Y1TPKQo7sca0pGB+CA-jJ7NmfK57AWG95hwXm7lubzfohqBBlGQBcLRRKpbIDCngcBM0TYCEXBB3ERM+Q8S9yJWxEA

  • @EgorMoscowNeverSleep
    @EgorMoscowNeverSleep 2 ปีที่แล้ว

    Спасибо. Я даже не знал, что TypeScript научился сам вычислять значение дженериков.
    Интересно только, почему вот та такой код он ругается, хотя по сути, всё тоже самое:
    ```
    function get(v: T, l1: L1, l2: L2) {
    return v[l1][l2];
    }
    const obj = {a: {d: 2}, b: {c: 1}}
    // Ошибка на значении 'c':
    // Argument of type 'string' is not assignable to parameter of type 'never'.(2345)
    get(obj, 'b', 'c')
    ```

    • @НейтральныйМаппер-з2м
      @НейтральныйМаппер-з2м 2 ปีที่แล้ว

      Если вы используете знак равно в дженерике, то и не забывайте добавить вопросительный знак к параметрам с соответствующими типами

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

    Антон, спасибо за отличный урок!!! У меня такой вопрос если можно: а как мне правильно типы ключей записать если я хочу по ключам получить значение из подобного объекта, но не хочу функцию использовать?
    пример моей типизации ключа:
    дан объект const radioBtnValue = {
    usually: ["avgmin", "avgmax"],
    records: ["extmin", "extmax"],
    }
    нужно получить из него значение const min = radioBtnValue[radio as keyof typeof radioBtnValue]
    можно без as в данном случае обойтись? У меня на работе я постоянно с подобным сталкиваюсь и хочу от as уйти, но не могу кейс с решением найти(((

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

    А почему не срабатывает L2 extends keyof L1? Ведь тип L1 уже понятен

  • @alex_akuna
    @alex_akuna 2 ปีที่แล้ว

    Блин я все понимаю но 4 строчка кода выгляди дико. Просто жесть.

  • @виртуоз_ру
    @виртуоз_ру ปีที่แล้ว

    Хорош 👍