Условные Типы TypeScript / Infer / Conditional Types

  Рет қаралды 19,316

wise.js 

wise.js 

Күн бұрын

Пікірлер: 80
@ibrmkoibrmko2493
@ibrmkoibrmko2493 Жыл бұрын
Материал очень интересный и хорошо подаётся! Огромная благодарность за труд!
@fess8501
@fess8501 2 жыл бұрын
Спасибо большое, ты просто лучший. Несколько дней не мог понять что такое infer и зачем он нужен, кучу всего перечитал до этого. А тут меньше 10ти минут и до меня наконец-то дошло это и не только
@ТимурХрусталёв-ъ1е
@ТимурХрусталёв-ъ1е 2 жыл бұрын
То же самое. Несколько раз читал докуму, периодически к ней возвращаясь, но так и не мог понять с этим infer... А тут всё доходчиво и понятно
@ОлегКолодезев
@ОлегКолодезев 2 жыл бұрын
Вот такие видео нужны на Ютубе, спасибо!
@wisejs
@wisejs 2 жыл бұрын
Спасибо за поддержку!
@mykhailostepanishchev6472
@mykhailostepanishchev6472 2 жыл бұрын
Супер,лаконично и информативно,большое спасибо ! Условные типы,TypeScript, Infer, Conditional Types.
@wisejs
@wisejs 2 жыл бұрын
спасибо за поддержку))
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Вот именно эти вещи в ТС я и считаю дичью! Нечитабельно, какие-то условия в условиях, на генериках, с кучей скобочек - оверинжиниринг с типами. Надо долго в это вникать, и научиться читать такие вложенности. И тут еще просто))) Я такие выкрутасы видел на ТС, чтомозг плавится.
@pavelgor8402
@pavelgor8402 Жыл бұрын
хотел написать коммент, но ты опередил)
@Script696
@Script696 8 ай бұрын
Со временем ты станешь лучше к этому относиться Когда то и reduce вызвал к сложности, правда?
@Ildar-i3o
@Ildar-i3o Ай бұрын
​@@Script696руль в автомобиле тоже можно ногами крутить, а к педалям приделать палки и давить на них руками, всего лишь надо к этому привыкнуть.
@ВладимирЛевадный-ц1и
@ВладимирЛевадный-ц1и 2 жыл бұрын
Спасибо автору. Лучшее объяснение из всех, что видел. Человек понимает, что говорит.
@СофьяИванова-д6ж
@СофьяИванова-д6ж 2 жыл бұрын
лучшие уроки на ютуб, что я находил
@gritsienkooleg3447
@gritsienkooleg3447 Жыл бұрын
Незаслуженно мало подписчиков, материал реально годный) Infer, conditional types - огонь ))
@АнтонСоколов-щ4ю
@АнтонСоколов-щ4ю Жыл бұрын
Хорошо рассказал про TypeScript Infer Conditional Types
@ТимурХрусталёв-ъ1е
@ТимурХрусталёв-ъ1е 2 жыл бұрын
Братче, ты просто красава! Всё доходчиво и понятно, мне не хватало этого видео
@alexpro5670
@alexpro5670 2 жыл бұрын
Infer, typescript, conditional types - спасибо за примеры
@EvgSh-v4x
@EvgSh-v4x 7 ай бұрын
Спасибо, ибо это действительно сложно, мало где понятно и коротко объяснено, "спрашиваемо" на собесах, видано в кучках популярных либ, но не особо "используемо"))))))))) 👍👍👍👍👍👍👍👍👍👍👍👍👍👍
@valentineserebreanu398
@valentineserebreanu398 Жыл бұрын
Респект за условные типы, все понятно. Но infer очень сумбурно объяснил, я все еще не понял, что именно оно делает, и как и зачем )
@EugenePetrov-l6l
@EugenePetrov-l6l Жыл бұрын
Помнится были функции коротенькие и понятные. Но появился тайпскрипт и эти функции разрослись до 5 страниц. Но багов меньше нестало)
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Да, это правда.
@PutlerXLO
@PutlerXLO Жыл бұрын
И это было охуенно! Приправил где нужно jsdoc и профит. Теперь кроме багов в коде еще и фиксить баги в типах, которые высосанные из пальца и пока проберешься среди дебрей дженериков, забудешь и логику кода, которой выходит иногда меньше, чем типов.
@ГенаПетров-н5ы
@ГенаПетров-н5ы 2 жыл бұрын
Спасибо. Полезно когда нет возможности получить типы, но хочется полной типизации
@dimalukashenko4865
@dimalukashenko4865 Жыл бұрын
Отличный урок, спасибо за труд!
@dmitriystoyanov933
@dmitriystoyanov933 2 жыл бұрын
работаю с тайп скриптом месяцев 5, но такую навороченную жесть пока не умею писать) Максимум самые простые дженерики, Пики, Омиты, Экстенды и т.д.
@777KoroL777
@777KoroL777 2 жыл бұрын
Я тоже месяц назад начал учить его, как ты говоришь эти моменты понятны а так как автор делает конечно сам сразу не додумаешься. И вообще тс призван облегчить жизнь разрабам, а в итоге я голову ломаю)))
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
​@@777KoroL777 Ага, потому что ТС - дичь!
@МаксимИсаев-ъ5о
@МаксимИсаев-ъ5о Жыл бұрын
@@777KoroL777 сначала ты работаешь на TS, потом TS работает на тебя)
@kamik0t0_yt83
@kamik0t0_yt83 Жыл бұрын
Действительно классный канал, очень понятно объясняешь. Подписчиков мало. Надеюсь в какой то момент выстрелит. Спасибо!
@melonges7884
@melonges7884 2 жыл бұрын
Круто, не знал о таких фишках)
@АлинаЧередниченко-п9ъ
@АлинаЧередниченко-п9ъ 2 жыл бұрын
Топ! Спасибо огромное автору!
@alexperemey6046
@alexperemey6046 2 жыл бұрын
Банальное озвучивание справки... главное так и не озвучено: практическое применение. Где и когда это может понадобиться? Для чего используется?
@ЭзизК
@ЭзизК Жыл бұрын
Всё доходчиво👍
@АндрейБ-п4я9н
@АндрейБ-п4я9н 10 ай бұрын
крутое видео, спасибо большое. жаль, что больше не снимаете(
@DavitBarbakadze
@DavitBarbakadze 2 жыл бұрын
Отлично объяснил.
@andriimuntian3632
@andriimuntian3632 2 жыл бұрын
Спасибо за infer!
@mrgrd56
@mrgrd56 2 жыл бұрын
8:38 а тут я не понял зачем ты использовал `T extends infer U ? ...` почему бы просто не написать: type GetStatus = T extends {status: any} ? T['status'] : null; есть какая-то разница разве?
@mushroom2267
@mushroom2267 Ай бұрын
я вообще не понял какая практическая польза от этого
@ВсеволодРусинский
@ВсеволодРусинский 2 жыл бұрын
👉 Этот комментарий создан в качестве уважения автору и для продвижения его канала.
@uncle-xxi
@uncle-xxi Жыл бұрын
Какая-то черная магия. Надо вникать. :)
@oRiGiNaLMrInsaf
@oRiGiNaLMrInsaf 10 ай бұрын
В примере с TryInfer, зачем вообще infer? Можно напрямую получить тип как T[keyof T], разве нет?
@efim4eg
@efim4eg 2 жыл бұрын
спасибо за infer, закрепил
@АнтонПономарев-ч6б
@АнтонПономарев-ч6б 5 ай бұрын
perfect
@alexeysvetlenko2217
@alexeysvetlenko2217 Жыл бұрын
крутяк
@mrgrd56
@mrgrd56 2 жыл бұрын
2:30 Имхо не лучший пример :с Ибо гораздо лакончинее было бы сделать так: function getId(obj: T): T['id'] { return obj.id; } (я использовал тут ещё unknown вместо any но в данном случае разницы особо нет, но я предпочитаю unknown вместо any, когда это возможно) либо можно так ещё, с использованием infer: function getId(obj: T): T extends {id: infer K} ? K : never { return obj.id; } но считаю что мой второй пример плохой ибо проще и лучше сделать без infer
@motolife4900
@motolife4900 2 жыл бұрын
Оооо, бомба
@plexterq3
@plexterq3 10 ай бұрын
Не очень понял infer на примере type GetStatus = T extends infer U ? U extends {status: any} ? U['status'] : null : null; Чем это отличается от просто? type GetStatus = T[keyof T];
@ixplo
@ixplo Жыл бұрын
спасибо за контент, но вы точно фронтенд разработчик? )) у вас оч давно не обновлялся браузер )
@Peter-vz4tb
@Peter-vz4tb 2 жыл бұрын
Очень интересно но ничего не понятно. А есть где-то более практические задачки. Чтобы можно было запустить и копопаться. На ангуларе например и чтобы все - интерфейсы, женерики, условныте типы.
@Alexander-fp4fs
@Alexander-fp4fs 2 жыл бұрын
отличные видео по typescript у тебя, а можешь плиз запилить видео react с typescript
@wisejs
@wisejs 2 жыл бұрын
Кажется, таких видео уже десятки. Что именно интересно?
@LeBron4eg
@LeBron4eg 2 жыл бұрын
Хорошие видосы, но мало!
@BlueCell
@BlueCell 11 ай бұрын
Не могу понять, зачем писать: ```type TryInfer = T extends infer R ? R[keyof R] : never;``` Если можно просто написать: ```type TryInfer = T[keyof T]``` ???
@habalgarmin
@habalgarmin 2 жыл бұрын
Какой смысл в этой конструкциии: T extends infer U ? . Немного переписал твои примеры для наглядности: type GetStatus0 = T extends object ? T extends { status : any} ? T['status'] : null : undefined type GetStatus1 = T extends infer U ? U extends { status : any} ? U['status'] : null : undefined type Status0 = GetStatus0 // typeOf Status0 - undefined type Status1 = GetStatus1 // typeOf Status1 - null, в undefined не свалюсь, какой бы тип не передал кроме never any unknown
@wisejs
@wisejs 2 жыл бұрын
Смысл - заставить тайпскрипт распознать тип
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
​@@wisejs Смысл - сломать себе мозг)))
@alexandroppolus
@alexandroppolus Жыл бұрын
Смысла никакого. Всё то же самое можно проще: type GetStatus = T extends {status : unknown} ? T['status'] : undefined;
@ПетрБалашенко
@ПетрБалашенко 2 жыл бұрын
Только начал познавать TS (входит в стэк куда хочу на работу устроится) и вроде бы все понятно когда работаешь со своими объектами или переменными, но когда с разных api прилетает кто во что горазд, то туплю и не понимаю как описать, вроде понятно что условными типами а толком не могу разобраться(
@khmerhan2748
@khmerhan2748 2 жыл бұрын
Если Вы не пишите свой интерпретатор, то Вам этот сахар не нужен.
@АлександрСосо-щ1б
@АлександрСосо-щ1б 7 ай бұрын
молодец, не забывает язычок трубочкой сворачивать, когда иностранные слова произносит!
@МихаилСидоров-ч7я
@МихаилСидоров-ч7я 2 жыл бұрын
Добрый всем вечер! type T = A extends [infer U, 1] | [1, infer U] ? U : never; type F = T; У F тип 2 | 1 type T = A extends [infer U, 1] | [1, infer U, infer U] ? U : never; type F = T; У F тип 2 | 3, но исходя из первого примера должен быть 2 | 3 | 1 Но это почему-то не так... Как вообще понимать такое поведение?
@wisejs
@wisejs 2 жыл бұрын
Вы сохраняете 2 и 3 через инфер в U. Из него получается объединение. Все правильно. А первый параметр игнорируется, потому что длина 3, а не 2.
@МихаилСидоров-ч7я
@МихаилСидоров-ч7я 2 жыл бұрын
@@wisejs Не совсем понятно, почему в первом примере тип F 2 | 1, если тогда по идее должно быть 1 | 2... И почему в первом примере появляется 1, если кортеж [1, 2] в принципе не может расширить кортеж [infer U, 1]? Объясните, пожалуйста, что именно прям в деталях происходит внутри компилятора TS, как он вообще обрабатывает инструкцию A extends [infer U, 1] | [1, infer U] ? U : never ? Просто в моем понимании если у нас аргументом дженерика попал тип [1, 2], то мы должны той инструкцией проверить, расширяет ли тип [1, 2] тип [infer U, 1] | [1, infer U... Истинность того, что расширяет, вытекает из подтипа [1, infer U], поэтому мы в U записываем 2... А откуда потом берется 1 я прям реально не могу понять... ((
@alexandroppolus
@alexandroppolus Жыл бұрын
​@@МихаилСидоров-ч7я первый пример выглядит как баг.
@raufhashimov241
@raufhashimov241 2 жыл бұрын
а зачем бросил канал ???
@yaroslav8609
@yaroslav8609 2 жыл бұрын
чет жесть какая-то, можно пример, где это на практике пригодится?
@wisejs
@wisejs 2 жыл бұрын
В видео есть примеры. Это не часто используемый, но полезный функционал. Я, например, постоянно использую ReturnType.
@starwalker.musician
@starwalker.musician 2 жыл бұрын
Программисты на C# или Java молча наблюдают как TypeScript стреляет себе в ногу ))) С лексической стороны, подобные конструкции это - самое уродливое ООП, которое я когда-либо видел. Тот случай когда костыли становятся просто не читаемыми.
@wisejs
@wisejs 2 жыл бұрын
@@starwalker.musician Каким боком ООП к данным конструкциям?
@leshax
@leshax 2 жыл бұрын
@@wisejs эти конструкции проявление параметрического полиморфизма в своем самом извращенном варианте
@wh1teb1ack92
@wh1teb1ack92 2 жыл бұрын
@@starwalker.musician реально это выглядят как не особенности языка, а реально костыли, которые лучше вообще обходить стороной.
@nickolaizein7465
@nickolaizein7465 2 жыл бұрын
ничего не понял 🙄
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Надо с основ начинать. Такое не сходу поймешь.
@whiteguards43
@whiteguards43 Жыл бұрын
По моему без infer легче
@crocus161
@crocus161 2 жыл бұрын
jjj
@РусланА-ф2н
@РусланА-ф2н Жыл бұрын
Спасибо за видео. Еле-еле разобрался Всё что касается условных типов и infer - это какой-то кромешный 3,14здец 7:40 как вообще такое чудовище читать
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Ты еще Перл не видел, вот там чудовище! Write only code.
World’s strongest WOMAN vs regular GIRLS
00:56
A4
Рет қаралды 53 МЛН
Увеличили моцареллу для @Lorenzo.bagnati
00:48
Кушать Хочу
Рет қаралды 8 МЛН
Ice Cream or Surprise Trip Around the World?
00:31
Hungry FAM
Рет қаралды 21 МЛН
Infer is easier than you think
13:38
Matt Pocock
Рет қаралды 93 М.
How Did I Not Know This TypeScript Trick Earlier??!
9:11
Josh tried coding
Рет қаралды 216 М.
Что такое keyof typeof в TypeScript.
8:46
wise.js 
Рет қаралды 19 М.
4 ways to use the TypeScript infer keyword
10:08
Andrew Burgess
Рет қаралды 13 М.
7 Лет Опыта в IT | Что я Понял?
19:56
Vlad Mishustin
Рет қаралды 228 М.
Controle De Estoque - PTI Algoritmos e programação II
1:41
Natália Secco
Рет қаралды 1
Conditional Types - Advanced TypeScript
23:10
Dmytro Danylov
Рет қаралды 38 М.
World’s strongest WOMAN vs regular GIRLS
00:56
A4
Рет қаралды 53 МЛН