Фишки TypeScript о которых ТЫ НЕ ЗНАЛ!

Поділитися
Вставка
  • Опубліковано 30 січ 2025

КОМЕНТАРІ • 271

  • @maksimtsvetkov3764
    @maksimtsvetkov3764 Рік тому +26

    На 24 минуте (Utility Types) при объявлении типа с таким же набором полей как у одного из полей интерфейса, как альернативный вариант записи можно просто записать type Birthday = User['birthday'], тогда конструкция valueOf не потребуется и читабельность будет чуть проще.
    Спасибо за видео!

    • @ixplo
      @ixplo Рік тому +7

      это проблема TS. почти любой тип можно описать почти бесконечным количеством вариантов. И никто не знает всех лучших вариантов ) я не знаю ни одного настоящего синьора в TS. Все постоянно в поиске. И это дико. Дико, что TS втыкается в 90% проектов, но никто не умеет в него нормально )

  • @dzmitrypasavetsdimapolonez2644
    @dzmitrypasavetsdimapolonez2644 Рік тому +42

    Пили ещё. Не затянуто, познавательно, хотелось бы увидеть, весь список подобных лайфхаков которые ты перечислил в видосе.

  • @VasyaFF
    @VasyaFF Рік тому +148

    Ulbi, красавчик! Можно вот этого вот побольше?

    • @MrTruth-rc2fr
      @MrTruth-rc2fr Рік тому +26

      Хахах, знакомые слова)

    • @АртемийКолотов-з4ь
      @АртемийКолотов-з4ь Рік тому +15

      Контент в кайф!

    • @VasyaFF
      @VasyaFF Рік тому +2

      @@MrTruth-rc2fr Это ЧатГПТ (подмигивает)

    • @anatoliiilescu839
      @anatoliiilescu839 Рік тому +2

      чтобы вы еще хотели ? думаю ради вас все будет!!!

    • @VasyaFF
      @VasyaFF Рік тому +5

      @@anatoliiilescu839 Порядочные люди знают, что здесь не стол заказов. Но ради продвижения ролика было бы хорошо устроить срач в комментах.

  • @IzyLifeVlog
    @IzyLifeVlog Рік тому +7

    Да, это здоровский формат! Быстрая иньекция новой информации, каждый день по 30 мин и уже будешь знать больше чем многие колеги!

  • @gigor1433
    @gigor1433 Рік тому +8

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

  • @MrRbSecond
    @MrRbSecond Рік тому +3

    Братан, хорош, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @ded-insult
    @ded-insult Рік тому +3

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

    • @ralfsimpa7423
      @ralfsimpa7423 Рік тому +1

      ахахахах а ты харош)

  • @falsetrue7910
    @falsetrue7910 Рік тому +5

    Узнал новое, не смотря на то, что с ТС давно на ты
    Спасибо!

  • @geek-peek
    @geek-peek Рік тому +4

    По поводу enum: они бывают не только строковые, ещё и числовые - хотя в рантайме это просто число, но на этапе разработки ты можешь писать не === 1, а что-нибудь имеющее смысл.
    И зачем они нужны:
    1. Чтобы не использовать строки в коде, и чтобы не было соблазна их повторять
    2. Чтобы обрабатывать входящие данные: у меня на проекте есть типы газоанализаторов, и приходят они как число 0-255, а на фронт нужно отдать название. Здесь помогли 2 enum - числовой и строковый

  • @dmitrykabanov9458
    @dmitrykabanov9458 Рік тому +35

    Было бы круто посмотреть видео про микрофронтенд.
    Условно - есть базовый Шелл, в котором есть базовый роутинг. И каждый роут это отдельный сервис, который прописан в ремоутс

    • @ixplo
      @ixplo Рік тому +1

      как меня триггерят такие темы :) микрофронты -- это решение, когда полный бардак в конторе надо как-то спасать. Микрофронты -- это приговор, когда всё просрали имхо

    • @parabellum577
      @parabellum577 Рік тому

      @@ixplo ну да, не могу представить кейс, когда такое говно реально нужно применять

    • @ixplo
      @ixplo Рік тому +1

      @@parabellum577 кейсы есть, но почти всегда за сопоставимое вложение ресурсов можно сделать что-то другое, что не повлияет на качество продукта

  • @BOCbMOU
    @BOCbMOU Рік тому +7

    27:43 Если нужно добавить один дженерик в функцию и нет необходимости экстендить его от чего-то, то можно просто добавить запятую:
    В таком виде это уже не будет JSX, а будет именно дженерик. И это актуально только для .tsx файлов, в .ts файлах с этим проблем нет.

    • @sjdjjsjsjs3991
      @sjdjjsjsjs3991 Місяць тому

      Как же хорошо, что я не использую react в своих проектах

    • @BOCbMOU
      @BOCbMOU Місяць тому

      @sjdjjsjsjs3991 странно гордиться своими недостатками.

  • @РобертСабиров-и8л

    Быстрые гайды офигенно заходят!) Правда слушаю на 1.75, поэтому они прям супер быстрые)) Материал полезный, даже если все знаешь, лишний раз повторишь. Спасибо за труды!

  • @bulatsafin-cg3tg
    @bulatsafin-cg3tg Рік тому +1

    Спасибо огромное! Действительно, без всякой воды. Сразу видно технический подход и понятный даже для гуманитария

  • @DubinArtur
    @DubinArtur Рік тому +4

    12:50 если надо, чтобы функция принимала стоки, которые относятся к enum, нужно в качестве аргумента функции указать ‘${UserRole}‘. Функция пропустит и enum значения как UserRole.Admin, так и "admin"

  • @holfizzz
    @holfizzz Рік тому +6

    это какой то п**дец. Я еле еле что то вкурил. И я понял что надо учиться и учиться. Тимур ты реально крут. Спасибо тебе❤❤

    • @dmitrykabanov9458
      @dmitrykabanov9458 Рік тому

      По сути, все что показано в данном видео это вспомогательные инструменты ТС.
      Это не обязательно использовать но надо знать, по тому что эти инструменты помогают писать код таким образом, чтобы предотвращать не корректный код. Если интересно, почитай про тайп гарды, анкноун и Невер.
      Всякие енамы, как по мне, не нужны. Они просто побыстрее работают

    • @holfizzz
      @holfizzz Рік тому +2

      @@dmitrykabanov9458 Я обязательно займусь этим но позже. Мне очень сложно это воспринимать так рано:)

  • @tagnati5585
    @tagnati5585 Рік тому +2

    Какой же офигенный видос. Спасибо большое за материал

  • @docaner
    @docaner Місяць тому

    Повелся на клик-бейт. Долго ждал момента провала. В итоге тебе вручили оффер 😁
    Я уже 2 собеса прошел: обещали дать обратную связь через 1-2 недели. В итоге никто не пришел на фан-встречу. Первый собес у меня в городе - просто поболтал с руководителем.
    Второй собес в Москве (по телемосту сдавал) - были алгоритмы: попалась задача на бинарный поиск. Я в шоке был, что спустя год учёбы в универе в голове хоть что-то отложилось.

  • @ArtyomSamsonchik
    @ArtyomSamsonchik Рік тому +3

    На 23:50 можно вытянуть тип Birthday гораздо проще. У TS есть синтаксис доступа к типу по индексу, и выглядит это так:
    type BirthDay = User['birthDay']
    И не нужны ни Pick, ни ValueOf.

    • @maximkarpov4405
      @maximkarpov4405 Рік тому +1

      так его valueOf по сути тоже самое

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

    Супер видео! буду ждать продолжения и по тайпскрипту и по другим темам! отличный формат!

  • @shittywizzard5727
    @shittywizzard5727 Рік тому +2

    Лаконично и ёмко, хорош, давай еще)

  • @Quentinrei
    @Quentinrei Рік тому +1

    Ещё не досмотрел, но уже заходит, крутой ролик

  • @luckytima2315
    @luckytima2315 Рік тому +3

    Бро давай побольше TS, он сейчас везде просто нужен )) Ну и фишки ванильного JS тоже хотелось бы узнать))

  • @farruhsydykov8420
    @farruhsydykov8420 Рік тому +4

    Супер! Давай больше о TS, backend, web3!

  • @deanArtDev
    @deanArtDev Рік тому +1

    1 кейс что пришел на ум, когда ты используешь не константный объект а через ValueOf получаешь типы и потом используешь строки или что там в readonly то если надо заменить значение ты будешь бегать по проекту и менять занчения везде, если же использоать константный объект (импортировать его да) то значение нужно заменять в одном месте

  • @dmitrykabanov9458
    @dmitrykabanov9458 Рік тому +4

    Про тайпгарды понравилось. Хороший пример

  • @gluktd
    @gluktd Рік тому

    Нижайший поклон добрый человек! Очень понравилось! knowledge sharing в массы

  • @elena_sva
    @elena_sva Рік тому +7

    В примере где с помощью ValueOf берём тип birthday можно просто взять TypeNameWithBirthday['birthday']

    • @UlbiTV
      @UlbiTV  Рік тому +5

      Справедливо, если нужно одно поле, пиком можно несколько цепануть

    • @BOCbMOU
      @BOCbMOU Рік тому

      @@UlbiTV если надо достать тип значений из нескольких полей, то как раз пик тут лишний, по прежнему можно несколько ключей перечислить:
      TypeNameWithBirthday['id' | 'age' | 'birthday']
      Пик всё же как раз для создания нового объекта с некоторыми старыми ключами и изначальными типами ключей. Доставать через него значение нелогично.

  • @strogalev
    @strogalev Місяць тому

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

  • @ОленаКуніцина
    @ОленаКуніцина Рік тому +4

    Как всегда годный контент. React, Typescript форева😂

  • @skobanev
    @skobanev 7 місяців тому

    Добрый день. Спасибо Вам огромное. А существует курс по TS для новичков в Вашем формате? Вы просто идеально информацию преподносите.

  • @vladimirliankevich1361
    @vladimirliankevich1361 Рік тому +3

    Спасибо тебе большое за такие познавательные видео!!!!!!! Как всегда по полочкам

  • @YuryGoltsman
    @YuryGoltsman Рік тому +2

    Пару новых штуковин узнал. Спасибо

  • @Tureckiy_xl
    @Tureckiy_xl Рік тому

    Батя, контент топчик, наваливай ещё!
    1.5 года работаю с TS.
    Дофига нового)

  • @НиколайКудряшов-к3й

    Как всегда коротко и по делу, очень полезное видео!

  • @ИванБорисов-б1ж
    @ИванБорисов-б1ж Рік тому +1

    Спасибо за видео, очень полезно. Хотелось бы видеть больше таких видео

  • @denispepper2830
    @denispepper2830 Рік тому +2

    Спасибо! Круто! Норм формат!

  • @demetrxx
    @demetrxx Рік тому

    Всё, что нужно, в одном месте, быстро и понятно 💣💥

  • @TheProfessionalGambler
    @TheProfessionalGambler Рік тому +1

    Интересные фишки, спасибо)
    20:40 пример не совсем корректный, когда мы делаем объект константой _obj as const_ , то мы его поля не сможем изменить, а в функцию мы передаем аргументом объект с похожим типом и он никак не связан с obj. То есть ТС только проверяет на соответствие типов параметра и аргумента, а не логику внутри функции.
    23:30 пример для Extract лучше с доки _type T0 = Extract;_ по простому это как пересечение. В твоём примере непонятно зачем указывать union, который и получаем.

  • @ВадимКокорев-й3ъ

    Привет, я давно смотрю твои видео, очень интересный контент, нравится твоя манера говорить и способность вести диалоги. Ты в каком-то видео говорил, что для начинающих программистов крайне важно попасть на хорошую работу, с хорошим начальником и коллективом, и я хотел бы узнать твое мнение, я очень начинаешь бэкэндер и фронтэндер, учился по разным курсам в интернете и твоим видео, подтянул JS, HTML и CSS, наконец-то подвернулся вариант с работой, которую долго искал, и согласился на первый же вариант, и тут началось: рамках обучения мне дали задание сделать фулстек проект, разработать приложение для ведения реестра, с базой данных на 10 таблиц, с 15000 строк, осуществить все в laravel при помощи php, сказали: ну делай, а теперь спустя небольшое время, начинается возмущение, что я медленно делаю и ничего не успеваю, сижу просто учусь. И я не знаю, так и должно быть, и это я правда медленно развиваюсь или все же должна быть какая-то помощь? Очень интересно твое мнение, буду рад, если ты ответишь, заранее больше спасибо
    P.s. я тоже закончил РТУ МИРЭА в 2021)

  • @BobbyBob21
    @BobbyBob21 Рік тому +2

    Ещё офигенная вещь это inner. Для динамических типов это просто незаменимая вещь.

  • @_GyG_
    @_GyG_ Рік тому +1

    Коммент в поддержку) как всегда все круто!

  • @АлексейБомко-ь1ш
    @АлексейБомко-ь1ш 7 місяців тому

    Крутые ролики у тебя, смотрю и практикуюсь) !спасибо!

  • @17u5h
    @17u5h Рік тому +1

    крутяк!
    Заскринил некоторые моменты, записал в "заметки"

  • @ekaterina1991
    @ekaterina1991 Рік тому +3

    Реакт и js такого формата очень жду

  • @Ramosok
    @Ramosok Рік тому +2

    Круто, очень много нового узнал.

  • @Levitizen
    @Levitizen Рік тому +1

    Круто, спасибо. Можно вот этого вот почаще

  • @sergeymalakhov2438
    @sergeymalakhov2438 Рік тому +1

    Классное видео.Очень зашёл такой контент

  • @MrJettann
    @MrJettann Рік тому +1

    Топ, испытываю проблемы с тс постоянно, с подобным контентом становится проще!

  • @max_mgtow
    @max_mgtow Рік тому +1

    Вперёд братан, контент в кайф! 👍👏🔥

  • @nothingg1759
    @nothingg1759 Рік тому +5

    Очень заходит! Понравится всем, спасибо большое!

  • @МаксимЯщиковский

    формат огонь. можно ли погрузиться глубже в дженерики с след видео ?

  • @qwe-rty-
    @qwe-rty- Рік тому +1

    Супер, надеялся еще на MappedTypes посмотреть, по ним видосик будет?)

  • @infodusha
    @infodusha Рік тому +1

    Привет! в первом примере надо возвращать результат функции never чтобы вычисляемый тип значения был правильный (а то иначе туда добавится undefined)

  • @valentinaicheva7846
    @valentinaicheva7846 Рік тому

    Очень полезно! Хочется еще подобный контент с фишками💥

  • @stmihan_
    @stmihan_ Рік тому +2

    Очень круто, но надеюсь ты сделаешь всё-таки видео по react query.

  • @ЕвгенийНагаев-п9ч

    Тимур это прям очень полезное видео)) спасибо

  • @frednoby8531
    @frednoby8531 Рік тому +1

    Интересные нюансы, благодарю!

  • @Лаурахит
    @Лаурахит Рік тому +1

    Действительно интересные приемы которые хотелось бы попробовать в деле.

  • @sergsergey4251
    @sergsergey4251 Рік тому +3

    Спасибо за полезное видео

  • @igortrifonov9339
    @igortrifonov9339 Рік тому +6

    По поводу первого случая, не нужно делать функцию, это лишнее. Можно просто написать const _: never = car.brand, и TS будет ругаться, если мы попадет в дефолт.

    • @BOCbMOU
      @BOCbMOU Рік тому +2

      Есть ещё проще вариант на 4.9+ версии: car.brand satisfies never;

    • @НаильШайхинуров-п7л
      @НаильШайхинуров-п7л Рік тому

      @@BOCbMOU Огонь! Не знал что такое есть

  • @reversoid8170
    @reversoid8170 Рік тому +1

    Очень круто и полезно! Не знал про Exclude)

  • @Quentinrei
    @Quentinrei Рік тому +1

    Больше таких роликов !

  • @MrDANPTZ
    @MrDANPTZ Рік тому

    Просто супер! Полезного было достаточно, что приятно
    Спасибо за ролик!

  • @ruslanla4654
    @ruslanla4654 Рік тому +2

    круто!!

  • @bambalbino
    @bambalbino Рік тому +1

    Очень круто!!! Спасибо

  • @foldisnomistake
    @foldisnomistake Рік тому +1

    круто, нужны еще такого плана видосы!

  • @ruslangilyazov7733
    @ruslangilyazov7733 Рік тому

    Больше type script & react & redux, please! Я знаю что есть много на канале про это но еще хочется

  • @NikitaKachan-y5i
    @NikitaKachan-y5i Рік тому +1

    Оч интересно, контент топ, идея топ

  • @МаксимФуторной
    @МаксимФуторной Рік тому +1

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

  • @ДанилБилоголовский-ф5ч

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

  • @dkaygorodov
    @dkaygorodov Рік тому +1

    Тимур, спасибо большое. Очень полезное видево!)

  • @JenechekDv
    @JenechekDv Рік тому

    стильно, модно, молодёжно. Давай ещё.

  • @МихаилСтудицкий

    очень интересный обзор!
    спасибо большое!

  • @STELLS541
    @STELLS541 Рік тому

    Видос просто 🔥.
    Можно такого больше? ☺️
    В конце про дженерики - это прям топ, как раз на днях увидел это в курсе и сразу понял тут, как это фиксить.
    А еще функцию онЧенч внутри селекта можно переписать через опшионал ченинг, что сделает ее чуточку короче.

  • @v.demchenko
    @v.demchenko Рік тому

    Интересная тема по поводу типизированых переиспользуемых компонентов. Наткнулся на много проблем типизации от создании темы до типизации пропсов.

  • @alexanderkomanov4151
    @alexanderkomanov4151 Рік тому +2

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

  • @ksushakiseleva2644
    @ksushakiseleva2644 Рік тому +1

    Спасибо за твой труд! ❤
    Твои видео очень полезные 👍

  • @alexmarch
    @alexmarch Рік тому +1

    хочу собеседования ! но любой контент твой хорош

  • @---Maksim---
    @---Maksim--- Рік тому +1

    Спасибо, на 1.25 смотрится отлично)

  • @natalyaiv3414
    @natalyaiv3414 Рік тому +1

    Тимур, спасибо! 👍

  • @lLoseControll
    @lLoseControll Рік тому +1

    Круто, продолжай)

  • @raff_m_d6971
    @raff_m_d6971 Рік тому +2

    контент топ, продолжай

  • @DemetriyArh
    @DemetriyArh Рік тому +1

    Круть. А о декораторах можешь рассказать?

  • @belomax100
    @belomax100 Рік тому +1

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

  • @alexshubin1
    @alexshubin1 Рік тому

    Лайков - 10% от просмотров - офигенный контент!

  • @tagnati5585
    @tagnati5585 7 місяців тому

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

  • @vladimirkuban426
    @vladimirkuban426 Рік тому +2

    Супер!

  • @tojiboyevumidjon
    @tojiboyevumidjon Рік тому +2

    Спасибо большое! Боже я только что узнал то что я зря мучился целый день

  • @l1mejkeee628
    @l1mejkeee628 Рік тому +1

    Больше такого контента!!!! Пожалуйста!!!

  • @battleroyalegamer9087
    @battleroyalegamer9087 Рік тому +1

    Подскажите на каком сайте лучше всего изучать javascript, или возможно есть какие-нибудь толковые курсы?

  • @ДмитрийКривов-ы5б

    очень полезно, спасибо

  • @saskirakosyan5268
    @saskirakosyan5268 Рік тому +1

    The best russian bloger

  • @ШамильДжакеев
    @ШамильДжакеев Рік тому +2

    Тимур привет, у меня давно в голове висит вопрос про conditional конструкцию. type Aboba = T extends string ? Abo : Ba, как по мне, как-то не очень вяжется если читать эту строку как "... если тип Т расширяет тип стринг, то ...", что мы расширяем?, как мы можем расширить все великое множестово всевозможных строк еще одной частной строкой, какя-то дичь? Возможно для англоговорящих такая последовательность очевидна, но я лично долго не мог вдуплить шо вообще происходит тупа из-за формулировки. Что думаешь на сей счет?

    • @ruslanshikhaliev9341
      @ruslanshikhaliev9341 Рік тому +1

      T extends (относится к типу/является подтипом/входит в группу типа) string

  • @mariaangelova2118
    @mariaangelova2118 Рік тому

    Можешь пожалуйста сделать подробный ролик про TS начиная с основ, с твоей подачей будет бомба!

  • @Orlov_Developer
    @Orlov_Developer Рік тому

    Полезно, рубрика классная

  • @Moishe_Rubinstein
    @Moishe_Rubinstein Рік тому +2

    strapi сделай бро! :)

  • @abdurazzoxabdullayev3705
    @abdurazzoxabdullayev3705 Рік тому +2

    Было бы хорошо если сделал видосики как Michigan TypeScript по ts

  • @dimabaturo2492
    @dimabaturo2492 Рік тому

    Как обычно контент в кайф

  • @egorpobylets6597
    @egorpobylets6597 Рік тому

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

  • @spadar1602
    @spadar1602 Рік тому

    Думаю, можешь добавить Module Augmentation, помогает когда нужно расширить тип из либы, чтобы, например подмешать свое данные в аргументы какого-то метода из либы