No video

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

  Рет қаралды 18,485

wise.js 

wise.js 

Күн бұрын

Условные Типы (Conditional Types) позволяют использовать тернарные операторы в работе с типами. Ключевое слово infer внутри условных выражений используется для распознавания типа.
Приятного просмотра! Буду благодарен за поддержку в виде комментария и лайка!
👉 Поддержка канала: / wisejs
✔️ Если хочешь изучать программирование со мной, не забудь подписаться :)
www.youtube.co....
✔️ Мой телеграм канал: t.me/joinchat/...
#typescript #тайпскрипт #урокитайпскрипт #infer

Пікірлер: 78
@ibrmkoibrmko2493
@ibrmkoibrmko2493 Жыл бұрын
Материал очень интересный и хорошо подаётся! Огромная благодарность за труд!
@fess8501
@fess8501 2 жыл бұрын
Спасибо большое, ты просто лучший. Несколько дней не мог понять что такое infer и зачем он нужен, кучу всего перечитал до этого. А тут меньше 10ти минут и до меня наконец-то дошло это и не только
@user-vl9te1cg3r
@user-vl9te1cg3r Жыл бұрын
То же самое. Несколько раз читал докуму, периодически к ней возвращаясь, но так и не мог понять с этим infer... А тут всё доходчиво и понятно
@alexperemey6046
@alexperemey6046 2 жыл бұрын
Банальное озвучивание справки... главное так и не озвучено: практическое применение. Где и когда это может понадобиться? Для чего используется?
@mykhailostepanishchev6472
@mykhailostepanishchev6472 2 жыл бұрын
Супер,лаконично и информативно,большое спасибо ! Условные типы,TypeScript, Infer, Conditional Types.
@wisejs
@wisejs 2 жыл бұрын
спасибо за поддержку))
@user-ql8vd1gn3m
@user-ql8vd1gn3m 2 жыл бұрын
Вот такие видео нужны на Ютубе, спасибо!
@wisejs
@wisejs 2 жыл бұрын
Спасибо за поддержку!
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Вот именно эти вещи в ТС я и считаю дичью! Нечитабельно, какие-то условия в условиях, на генериках, с кучей скобочек - оверинжиниринг с типами. Надо долго в это вникать, и научиться читать такие вложенности. И тут еще просто))) Я такие выкрутасы видел на ТС, чтомозг плавится.
@pavelgor8402
@pavelgor8402 Жыл бұрын
хотел написать коммент, но ты опередил)
@Script696
@Script696 5 ай бұрын
Со временем ты станешь лучше к этому относиться Когда то и reduce вызвал к сложности, правда?
@mrgrd56
@mrgrd56 2 жыл бұрын
8:38 а тут я не понял зачем ты использовал `T extends infer U ? ...` почему бы просто не написать: type GetStatus = T extends {status: any} ? T['status'] : null; есть какая-то разница разве?
@gritsienkooleg3447
@gritsienkooleg3447 Жыл бұрын
Незаслуженно мало подписчиков, материал реально годный) Infer, conditional types - огонь ))
@user-rd8uh2ym3c
@user-rd8uh2ym3c 2 жыл бұрын
Спасибо автору. Лучшее объяснение из всех, что видел. Человек понимает, что говорит.
@alexpro5670
@alexpro5670 2 жыл бұрын
Infer, typescript, conditional types - спасибо за примеры
@user-no2rk3rz4e
@user-no2rk3rz4e Жыл бұрын
Помнится были функции коротенькие и понятные. Но появился тайпскрипт и эти функции разрослись до 5 страниц. Но багов меньше нестало)
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Да, это правда.
@PutlerXLO
@PutlerXLO Жыл бұрын
И это было охуенно! Приправил где нужно jsdoc и профит. Теперь кроме багов в коде еще и фиксить баги в типах, которые высосанные из пальца и пока проберешься среди дебрей дженериков, забудешь и логику кода, которой выходит иногда меньше, чем типов.
@dmitriystoyanov933
@dmitriystoyanov933 2 жыл бұрын
работаю с тайп скриптом месяцев 5, но такую навороченную жесть пока не умею писать) Максимум самые простые дженерики, Пики, Омиты, Экстенды и т.д.
@777KoroL777
@777KoroL777 2 жыл бұрын
Я тоже месяц назад начал учить его, как ты говоришь эти моменты понятны а так как автор делает конечно сам сразу не додумаешься. И вообще тс призван облегчить жизнь разрабам, а в итоге я голову ломаю)))
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
​@@777KoroL777 Ага, потому что ТС - дичь!
@user-mu4my8fq2e
@user-mu4my8fq2e Жыл бұрын
@@777KoroL777 сначала ты работаешь на TS, потом TS работает на тебя)
@user-wu7mg1cu4e
@user-wu7mg1cu4e Жыл бұрын
лучшие уроки на ютуб, что я находил
@user-kr6lp7rm5y
@user-kr6lp7rm5y 2 жыл бұрын
Спасибо. Полезно когда нет возможности получить типы, но хочется полной типизации
@user-vl9te1cg3r
@user-vl9te1cg3r Жыл бұрын
Братче, ты просто красава! Всё доходчиво и понятно, мне не хватало этого видео
@valentineserebreanu398
@valentineserebreanu398 Жыл бұрын
Респект за условные типы, все понятно. Но infer очень сумбурно объяснил, я все еще не понял, что именно оно делает, и как и зачем )
@user-xj8io9rl7g
@user-xj8io9rl7g Жыл бұрын
Хорошо рассказал про TypeScript Infer Conditional Types
@user-yr5cp3pd1c
@user-yr5cp3pd1c 4 ай бұрын
Спасибо, ибо это действительно сложно, мало где понятно и коротко объяснено, "спрашиваемо" на собесах, видано в кучках популярных либ, но не особо "используемо"))))))))) 👍👍👍👍👍👍👍👍👍👍👍👍👍👍
@andriimuntian3632
@andriimuntian3632 2 жыл бұрын
Спасибо за infer!
@user-xw8ur4sc6t
@user-xw8ur4sc6t 7 ай бұрын
крутое видео, спасибо большое. жаль, что больше не снимаете(
@melonges7884
@melonges7884 2 жыл бұрын
Круто, не знал о таких фишках)
@dimalukashenko4865
@dimalukashenko4865 Жыл бұрын
Отличный урок, спасибо за труд!
@user-xe7sp3pr7t
@user-xe7sp3pr7t 2 жыл бұрын
Топ! Спасибо огромное автору!
@user-te9ci1tx4x
@user-te9ci1tx4x Жыл бұрын
Всё доходчиво👍
@kamik0t0_yt83
@kamik0t0_yt83 Жыл бұрын
Действительно классный канал, очень понятно объясняешь. Подписчиков мало. Надеюсь в какой то момент выстрелит. Спасибо!
@DavitBarbakadze
@DavitBarbakadze 2 жыл бұрын
Отлично объяснил.
@uncle-xxi
@uncle-xxi Жыл бұрын
Какая-то черная магия. Надо вникать. :)
@user-sv1ze9gk3b
@user-sv1ze9gk3b 2 жыл бұрын
👉 Этот комментарий создан в качестве уважения автору и для продвижения его канала.
@user-ps6hu8qs8z
@user-ps6hu8qs8z 2 ай бұрын
perfect
@alexeysvetlenko2217
@alexeysvetlenko2217 Жыл бұрын
крутяк
@efim4eg
@efim4eg 2 жыл бұрын
спасибо за infer, закрепил
@ixplo
@ixplo Жыл бұрын
спасибо за контент, но вы точно фронтенд разработчик? )) у вас оч давно не обновлялся браузер )
@oRiGiNaLMrInsaf
@oRiGiNaLMrInsaf 7 ай бұрын
В примере с TryInfer, зачем вообще infer? Можно напрямую получить тип как T[keyof T], разве нет?
@Peter-vz4tb
@Peter-vz4tb 2 жыл бұрын
Очень интересно но ничего не понятно. А есть где-то более практические задачки. Чтобы можно было запустить и копопаться. На ангуларе например и чтобы все - интерфейсы, женерики, условныте типы.
@plexterq3
@plexterq3 7 ай бұрын
Не очень понял infer на примере type GetStatus = T extends infer U ? U extends {status: any} ? U['status'] : null : null; Чем это отличается от просто? type GetStatus = T[keyof T];
@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
@LeBron4eg
@LeBron4eg 2 жыл бұрын
Хорошие видосы, но мало!
@BlueCell
@BlueCell 8 ай бұрын
Не могу понять, зачем писать: ```type TryInfer = T extends infer R ? R[keyof R] : never;``` Если можно просто написать: ```type TryInfer = T[keyof T]``` ???
@motolife4900
@motolife4900 2 жыл бұрын
Оооо, бомба
@Alexander-fp4fs
@Alexander-fp4fs 2 жыл бұрын
отличные видео по typescript у тебя, а можешь плиз запилить видео react с typescript
@wisejs
@wisejs 2 жыл бұрын
Кажется, таких видео уже десятки. Что именно интересно?
@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 9 ай бұрын
Смысла никакого. Всё то же самое можно проще: type GetStatus = T extends {status : unknown} ? T['status'] : undefined;
@nickolaizein7465
@nickolaizein7465 2 жыл бұрын
ничего не понял 🙄
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Надо с основ начинать. Такое не сходу поймешь.
@user-tp2mn8xz2u
@user-tp2mn8xz2u 2 жыл бұрын
Только начал познавать TS (входит в стэк куда хочу на работу устроится) и вроде бы все понятно когда работаешь со своими объектами или переменными, но когда с разных api прилетает кто во что горазд, то туплю и не понимаю как описать, вроде понятно что условными типами а толком не могу разобраться(
@khmerhan2748
@khmerhan2748 2 жыл бұрын
Если Вы не пишите свой интерпретатор, то Вам этот сахар не нужен.
@user-fq4pc7fm2z
@user-fq4pc7fm2z 4 ай бұрын
молодец, не забывает язычок трубочкой сворачивать, когда иностранные слова произносит!
@user-qk1ih4jy5r
@user-qk1ih4jy5r 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.
@user-qk1ih4jy5r
@user-qk1ih4jy5r 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 9 ай бұрын
​@@user-qk1ih4jy5r первый пример выглядит как баг.
@yaroslav8609
@yaroslav8609 2 жыл бұрын
чет жесть какая-то, можно пример, где это на практике пригодится?
@wisejs
@wisejs 2 жыл бұрын
В видео есть примеры. Это не часто используемый, но полезный функционал. Я, например, постоянно использую ReturnType.
@starwalker.odessa
@starwalker.odessa 2 жыл бұрын
Программисты на C# или Java молча наблюдают как TypeScript стреляет себе в ногу ))) С лексической стороны, подобные конструкции это - самое уродливое ООП, которое я когда-либо видел. Тот случай когда костыли становятся просто не читаемыми.
@wisejs
@wisejs 2 жыл бұрын
@@starwalker.odessa Каким боком ООП к данным конструкциям?
@leshax
@leshax 2 жыл бұрын
@@wisejs эти конструкции проявление параметрического полиморфизма в своем самом извращенном варианте
@wh1teb1ack92
@wh1teb1ack92 2 жыл бұрын
@@starwalker.odessa реально это выглядят как не особенности языка, а реально костыли, которые лучше вообще обходить стороной.
@raufhashimov241
@raufhashimov241 2 жыл бұрын
а зачем бросил канал ???
@whiteguards43
@whiteguards43 9 ай бұрын
По моему без infer легче
@crocus161
@crocus161 Жыл бұрын
jjj
@user-mb7kp1bl4w
@user-mb7kp1bl4w Жыл бұрын
Спасибо за видео. Еле-еле разобрался Всё что касается условных типов и infer - это какой-то кромешный 3,14здец 7:40 как вообще такое чудовище читать
@olezhonnv3215
@olezhonnv3215 Жыл бұрын
Ты еще Перл не видел, вот там чудовище! Write only code.
Infer is easier than you think
13:38
Matt Pocock
Рет қаралды 89 М.
Little brothers couldn't stay calm when they noticed a bin lorry #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 21 МЛН
Gli occhiali da sole non mi hanno coperto! 😎
00:13
Senza Limiti
Рет қаралды 22 МЛН
Что такое keyof typeof в TypeScript.
8:46
wise.js 
Рет қаралды 19 М.
How Did I Not Know This TypeScript Trick Earlier??!
9:11
Josh tried coding
Рет қаралды 210 М.
Generics: The most intimidating TypeScript feature
18:19
Matt Pocock
Рет қаралды 172 М.
THE MOST FREQUENT MISCONCEPTIONS ABOUT OOP
19:37
ExtremeCode
Рет қаралды 549 М.
Зачем нужен TypeScript - простые примеры использования
17:05
Михаил Непомнящий
Рет қаралды 44 М.
Mapped Types - Advanced TypeScript
12:16
Dmytro Danylov
Рет қаралды 42 М.