TypeScript #10 Общие типы (Generic)

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

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

  • @paavalijarvinen3293
    @paavalijarvinen3293 ปีที่แล้ว +7

    Чётко и без воды всё объяснил. Лайк

  • @AleksandrundViktoriaBarabanov
    @AleksandrundViktoriaBarabanov 6 หลายเดือนก่อน

    СПАСИБО!!!! Я уж думал, что никогда не разберусь, а тут 7 минут и готово!!!!

    • @YauhenKavalchuk
      @YauhenKavalchuk  6 หลายเดือนก่อน

      Всегда пожалуйста

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

    уже несколько месяцев пользуюсь ТС но только теперь до конца понял - (Generic). Спасибо за хорошее объяснение!

  • @ГеннадийГорохов-ц8н
    @ГеннадийГорохов-ц8н ปีที่แล้ว +1

    Наконец-то хоть кто-то обьяснил что такое дженерики нормально! Спасибо!!

  • @blackwood8816
    @blackwood8816 5 หลายเดือนก่อน

    Благодарю за объяснение))

    • @YauhenKavalchuk
      @YauhenKavalchuk  5 หลายเดือนก่อน

      Всегда пожалуйста

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

    Привет, Евгений!
    Однозначно лайк!

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

    Вопрос, а почему не использовать в последнем случае просто намбер вместо K extends number ?

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

      Тоже такой вопрос возник. Наверное просто пример неудачный

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

      Можно реализовать функцию которая будет возводить в степень как один примитив так и массив с ними

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

      То есть например класс который сможет производить операции как над единичным обьектом так и над массивом таких объектов, это может быть нужно и удобно

    • @alekseiv0303
      @alekseiv0303 3 ปีที่แล้ว

      @@anton_soldatov Можно пример (скажем, в песочнице)?

    • @БорисБаровский
      @БорисБаровский 3 ปีที่แล้ว

      потому что K это как переменная которую ты можешь подставлять, и этот вопрос отпадет если попробуешь заменить K на number

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

    Где тут два лайка поставить) Уже пару раз пересмотрел))

  • @МаксимИсаев-ъ5о
    @МаксимИсаев-ъ5о 2 ปีที่แล้ว

    Моё почтение!

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

    В плюсах эти дженерики называют шаблонами, классная вещь.

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

    К сожалению, тема не раскрыта, простой пересказ документации.
    Нет ни примеров реального использования, ни узких и сложных тем по типу typeof, keyof в дженериках, условного наследования и тп.
    По сути мы получили "ну вот это можно использовать так: ", а зачем и почему ? зачем нужен K если можно явно указать тип number

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

      Было бы уважительно, если бы автор ответил на этот комментарий.

    • @макскупр-ш4у
      @макскупр-ш4у 2 ปีที่แล้ว +4

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

    • @kamik111
      @kamik111 3 หลายเดือนก่อน

      @@макскупр-ш4у а почему просто тип any не указать тогда?

  • @chkpg4317
    @chkpg4317 3 ปีที่แล้ว

    Спасибо большое!

  • @DerekGaming
    @DerekGaming 6 หลายเดือนก่อน

    Почему это объяснено лучше чем в яндекс практикум даже спустя 4 года?..

    • @YauhenKavalchuk
      @YauhenKavalchuk  6 หลายเดือนก่อน

      Понятия не имею)

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

    Спасибо, очень толковое объяснение, теперь много стало понятнее.

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

    Оо я ждал этого урока! Спасибо!

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

    Спасибо! Есть вопросы: 1. В песочнице TS не работает синтаксис ES6? Ошибка при создании generic типа в виде стрелочной функции. 2. Зачем дженерик типу давать строгую типизацию для аргумента (K extends number), когда можно использовать строгую типизацию без дженерик типа в данном случае?

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

      1. Должно работать, возможно не включена какая-то настройка
      2. Это было чисто для примера

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

      @@YauhenKavalchuk Понял. Спасибо.

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

      @@taran_dm const getter = (data:T):T=>data

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

    Евгений, спасибо за курс, но вынужден согласиться с другими комментаторами - объяснение так себе. Пришлось переключиться и поискать более конкретное и внятное объяснение. Если с английским не совсем туго, то рекомендую th-cam.com/video/nViEqpgwxHE/w-d-xo.html

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

      Я не часто использовал generic типы, поэтому рассказал, как сам понял. Соглашусь, что можно было подробнее, но уж как есть

  • @mykhailokurta8856
    @mykhailokurta8856 4 ปีที่แล้ว

    супер контент, роботаю React Native Developerom, только месяц, как раз начинаем писать на TS проект, курс очень помогает , а то пишеш что-то и сидиш вроде зделаеш а до конца как роботает непонимаеш))))

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

      👍

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

      Парень, извини, но что у тебя с мягкими знаками в окончаниях глаголов? Я хоть и технарь, но, читаю и кровь из глаз идёт ))

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

      @@UnrealTabby ahaha, 8class, toje idet krov:;)

  • @O-L-1986
    @O-L-1986 3 ปีที่แล้ว

    Спасибо

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

    отлично спасибо ! А вы могли бы записать курс по алгоритмам например ?

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

      В планах есть, но когда приступлю к записи пока не знаю

    • @dimageorgiev5798
      @dimageorgiev5798 4 ปีที่แล้ว

      @@YauhenKavalchuk спасибо за ваш труд !

  • @CoryClark-jw3ij
    @CoryClark-jw3ij ปีที่แล้ว

    👍

  • @olgamazurenko8142
    @olgamazurenko8142 4 ปีที่แล้ว

    Четко и по делу. Спасибо!

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

    6:53 не очень понял, зачем делать дженерик наследуемый от number, если нам нужен только тип number.
    Проще сразу написать в конструкторе public name: T, public age: number, ведь K всё равно не может быть ни чем, кроме number

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

      Это было нужно в качестве примера

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

      @@YauhenKavalchuk нужны примеры из реальной практики, а не пример ради примера, где нет логики.

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

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

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

    Зачем нам использовать способ K extends number, если мы просто в конструкторе можем потом указать public age: number вообще не использую тип К, если он будет только числом

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

      Это было чисто для примера

  • @user-paint-alexandra
    @user-paint-alexandra 4 ปีที่แล้ว +13

    Эх, вопрос у меня только один. Зачем было придумывать TypeScript с типизацией переменных, а потом искать, как эти правила обойти: any, generics...

    • @ПавелВещенко-ю2я
      @ПавелВещенко-ю2я 4 ปีที่แล้ว +6

      TypeScript придуман для экономии времени разработчика, подробных сообщениях об ошибках, контролем над приложением и тд.
      А это не "обход правил", а очень практичная гибкость данного инструмента, раньше тоже считал что такая себе тема этот ts, но после набитых шишек понимаю что годнота)

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

    Ребята, я не понял, а в чем разница между дженерик типом и типом any?
    Я так же могу указать в аргументах any и аргументы будут принимать любой тип

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

      any - это любой тип (по сути данный вариант просто убирает весь смысл типизации). Generic - это гибкий, конфигурируемый вариант типа

  • @ОксанаГаращенко-д5р
    @ОксанаГаращенко-д5р ปีที่แล้ว

    почему в последнем примере вместо K extends number нельзя написать просто number?

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

      Это нужно чисто для примера

  • @АнастасияЧернышева-ь2т
    @АнастасияЧернышева-ь2т 2 หลายเดือนก่อน

    А зачем писать "K extends number" если это то же самое что и просто number? Или есть разница какая-то?

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

      Всё верно. Это было чисто для примера

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

    Вот вроде понятно все в уроках, работаю с ТС уже 4 месяца, а до сих пор тимлида пингую, трудно правильно дженерики писать.. Видимо нужны годы опыта, хз.

  • @akuma8865
    @akuma8865 3 ปีที่แล้ว

    Можно ли смешивать generic с интерфейсом/типом? Если да, то можно маленький пример?)

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

      Если честно, не сталкивался с таким, не могу ничего сказать

  • @aleksandrgradov7859
    @aleksandrgradov7859 4 ปีที่แล้ว

    generic можно задавать только классам и функциям? например для массива или объекта у меня не получилось:
    const arr: = []
    const obj: = {}

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

      Там другой синтаксис, Array. В предыдущих уроках можно найти эту информацию

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

    Не стал бы говорить о том, что стрелочные функции (arrow function expression) - это ES6 синтаксис, а обычные функции(function declaration statement) ES5. Они как бы не одно и тоже - во-первых, в стандарте ES6 присутствует и function (function declaration statement). Посему можно просто говорить о стрелочных функциях (arrow function expression) и function declaration statement + для полноты можно было добавить function definition expression. Если ничего не перепутал.

    • @РоманГирич-з5ш
      @РоманГирич-з5ш 4 ปีที่แล้ว

      большинство людей не знает всех именований объявлений функций )

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

      душнила

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

    Golang: не понял

  • @iGotton
    @iGotton 4 ปีที่แล้ว

    +

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

    nic nie rozumiju

  • @Bartosh-gd3yq
    @Bartosh-gd3yq ปีที่แล้ว

    Абышто

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

    Автор просит оставить комментарий если что то не понятно, но на вопросы комментаторов не отвечает...

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

      Не всегда есть на это время

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

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

  • @KonstantinGolovnev
    @KonstantinGolovnev 3 ปีที่แล้ว

    Кратко и ясно, спасибо! Лайк