3 вещи для написания сложной TypeScript типизации

  Рет қаралды 6,585

Ayub Begimkulov

Ayub Begimkulov

Күн бұрын

Пікірлер: 62
@darkside2436
@darkside2436 Жыл бұрын
Хороший контент. Идеально подходит для тех кто хочет быстро изучить Typescript или повторить забытые вещи. Продолжай в том же духе. Желаю удачи.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@romanryaboshtan9270
@romanryaboshtan9270 Жыл бұрын
мощнейшее видео, лучший контент по TS на просторах рунета
@роматарасов-о8л
@роматарасов-о8л Жыл бұрын
афигеть за первые 5 минут видоса увидел столько откровений именно такой видос обьясняющий неочевидные механики я ждал возможно аюб не прочитает мой коммент под прошлым видосом поэтому продублирую здесь: "вместо того чтобы создавать функцию typedMemo, можно через ключевое слово declare перетипизировать memo из React"
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
А я по-моему под прошлым ответил уже) По поводу overwrite'а типизации - я просто не люблю так делать, но способ тоже рабочий.
@raff_m_d6971
@raff_m_d6971 Жыл бұрын
Спасибо(Очень:нужное):видео
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
let рад: что = "понравилось";
@olegdegterov1595
@olegdegterov1595 Жыл бұрын
Спасибо, с каждым видео становится понятнее.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Круто, что есть прогресс!
@WebEnv
@WebEnv Жыл бұрын
как всегда отлично, продолжай!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@МарияЧерешня-у2й
@МарияЧерешня-у2й Жыл бұрын
Давай, вперёд во благо!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@xxcrypt234
@xxcrypt234 Жыл бұрын
Очень круто, узнал много нового. Спасибо!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
не за что!
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Прикольное видео про задачки, спасибо!)) а можно еще?)
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо за фидбэк! Да, можно попробовать еще сделать.
@rustamakhmetyanov4404
@rustamakhmetyanov4404 Жыл бұрын
Как всегда по красоте раскидал, спасибо.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо за фидбэк!
@Максим-д1у4щ
@Максим-д1у4щ Жыл бұрын
Спасибо! как всегда круто
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Рад, что понравилось!
@sergei_sergeevu4
@sergei_sergeevu4 Жыл бұрын
Спасибо за познавательный контент!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
не за что)
@jamjam3337
@jamjam3337 Жыл бұрын
👏👍
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@mercury_2379
@mercury_2379 Жыл бұрын
комментарий в поддержку канала
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@HEX_CAT
@HEX_CAT Жыл бұрын
❤🎉
@alexandersmirnov3161
@alexandersmirnov3161 Жыл бұрын
Продвигаем
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@just__did__it
@just__did__it Жыл бұрын
го видос по диклорациям в ts. Важная тема
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
У меня есть в списке, правда кажется, что людям поднадоел чуть плейлист этот. Постараюсь выпустить в ближайшее время.
@ilyagamepub
@ilyagamepub Жыл бұрын
Очень классное видео, только вот совсем непонятно, зачем такие сложные типы нужны) пока что не приходилось на работе с таким сталкиваться. Надеюсь, разберусь, чтобы потом вернуться еще раз к видео и понять всё
@gabblz480
@gabblz480 Жыл бұрын
Вот да, прикольно узнавать, что так можно писать, но зачем это нужно? Когда это нужно? Хотелось бы увидеть примеры использования, потому что обычно такой необходимости нет
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Ну если есть вопрос зачем - то тогда они и не нужны. Однако примеров много, зачастую они связаны с чем-то нестандартным - Маппинг токенов для темы, библиотеки, и тд.
@Дмитрий-л3я7ы
@Дмитрий-л3я7ы 8 ай бұрын
Спасибо за видос, всё более менее понятно (не совсем только понял этот синтаксис {...}[keyof T] в теме mappedType -> union. По ходу надо просто запомнить эту конструкцию, логически я ее хоть убей не понимаю, как она строится и почему после объекта идут квадратные скобки с keyof T). Еще, подскажите, как сделать union не массивов, а объектов, причем чтобы в качестве ключей объектов в union нужно использовать существующие ключи в изначальном mappedType. То есть, сделать из type o = { a: string, b: number, c: boolean } такой union { a: string } | { b: number } | { c: boolean } Попробовал так type res = { [K in keyof T]: { K: T[K] } }[keyof T] но он воспринимает K не как переменную, а как литеральный ключ. Заранее спасибо)
@vladan5100
@vladan5100 Жыл бұрын
Центральный Typescript учебник!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
До учебника думаю тут далеко, больше курс по повышению квалификации)
@evgeniymarkitan862
@evgeniymarkitan862 Жыл бұрын
Лучший контент по TS на русском языке❤‍🔥❤‍🔥❤‍🔥
@mikeempire
@mikeempire Жыл бұрын
Соглашусь!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо большое!
@romanryaboshtan9270
@romanryaboshtan9270 Жыл бұрын
да, 100%
@rahimkhatsiev2851
@rahimkhatsiev2851 Жыл бұрын
Goood!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Thanks!
@klubkov
@klubkov Жыл бұрын
Хорошее видео, но не хватает примеров из реальных задач со сложной типизацией
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо! Примеры не стал приводить, так как большинство из них сложные и специфичные под определенный кейс. Но учту в следующий раз, попробую привести что-то наглядное.
@НикитаШевченко-ы8я
@НикитаШевченко-ы8я Жыл бұрын
А почему если использовать в DeepReadonly тип Record, а не Record то он не пропускает кейс с функциями?
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Точный ответ я не знаю, но это деталь TS, если ты пишешь Record - то это любой непримитив. А если Record то у тебя должен быть index signature - то есть возможность писать/читать в любые ключи, что соответствует только объекту.
@CJIu3eHb
@CJIu3eHb Жыл бұрын
Интересно было бы узнать, почему так забавно в "ffoooobarbar" расколбасило в граничном кейсе на 29:24.
@fayster91
@fayster91 Жыл бұрын
Да все просто: Так как у нас From пустая строка и подстроку найти не удалось, то идем с самого начала. Start не может быть пустой, при условии, что исходная строка не пустая, то запись `${infer Start}{From}${infer End}` можно интерпретировать как 'f' + '' + 'oobarbar'. И дальше уже все понятно. А вот если бы была запись вида `{From}${infer End}`, то тогда бы foo встала в самое начало и было бы foofoobarbar
@CJIu3eHb
@CJIu3eHb Жыл бұрын
@@fayster91 Спасибо, понятно. Правда основано на утверждении, "Start не может быть пустой" - это самый неоднозначный момент, который, походу, можем вывести только эмпирически, если не лезть в исходники TS. Хотя может и в доках где написано, но сомнительно.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Мне кажется тут есть какой-то странный механизм того, как TS матчит эти строки. Детально я прямо не скажу, почему так).
@ANTONZUBAREV
@ANTONZUBAREV Жыл бұрын
Как сделать чтобы // ^? работал
@АндрейЯсновский-г5э
@АндрейЯсновский-г5э Жыл бұрын
Здравствуйте, начал обращать внимание на типы в библиотеках и стал часто видеть такое interface IExamole1 { should: IFunctions; } И самое не понятно для меня это interface IFunctions { (arg1: “be.have”, type: string): any } И вызвав функцию с типом IFunctions можно параметры выбирать из arg1, а не просто передавать строку…Будьте добры, объясните как же это работает Пример из cypress взят)
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Если я тебя правильно понял, то весь смысл заключается в том, что в TS есть литеральные типы. То есть не просто строка, а конкртно "a" | "b" | "c". То есть, если ты передашь туда "asf" - то это будет не правильно. Так вот, когда ты юзаешь литеральные типы, то ТС тебе будет сам подсказывать возможные варианты.
@TxenuxV
@TxenuxV Жыл бұрын
Вроде всё и понятно, но не понятно где это применять в реальных проектах, не хватает примеров для таких людей как я. )
@Xeon83
@Xeon83 Жыл бұрын
Такие вещи нельзя так быстро преподносить, типичная ошибка блогеров передающих сложную информацию. Лучше медленней и с примерами. А контент отличный!
@fiatluxinregnonoctis
@fiatluxinregnonoctis Жыл бұрын
Классно, но очень быстро
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Постараюсь по медленнее в следующий раз.
@aipronator
@aipronator Жыл бұрын
Про infer все равно непонятно
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Я бы посоветовал потыкать самому на примерах, тогда должно дойти.
ТОП 8 вещей которые я не люблю в TypeScript
23:31
The IMPOSSIBLE Puzzle..
00:55
Stokes Twins
Рет қаралды 136 МЛН
How To Choose Mac N Cheese Date Night.. 🧀
00:58
Jojo Sim
Рет қаралды 54 МЛН
Which team will win? Team Joy or Team Gumball?! 🤔
00:29
BigSchool
Рет қаралды 15 МЛН
Разбираемся в React JSX
13:49
Ayub Begimkulov
Рет қаралды 8 М.
Infer is easier than you think
13:38
Matt Pocock
Рет қаралды 93 М.
Почему я не использую хук useReducer? | React Hooks
30:27
The Super Fat Guy Beat the Bodybuilders at Muscle Beach | Muscle Madness
9:17
The IMPOSSIBLE Puzzle..
00:55
Stokes Twins
Рет қаралды 136 МЛН