Как использовать unknown, never, void, object, Record в TypeScript

  Рет қаралды 11,762

Ayub Begimkulov

Ayub Begimkulov

Күн бұрын

Пікірлер: 81
@promoabys
@promoabys Жыл бұрын
Аюб, спасибо. Очень заходят твои уроки по ТS Практические примеры из видео просто огонь. Экономишь кучу времени на самостоятельное изучение !!!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Рад, что понравилось!
@daryaemelyanova1785
@daryaemelyanova1785 6 ай бұрын
Очень полезно, много информации выдано за 18 мин. Спасибо за видео
@admenmod
@admenmod 7 ай бұрын
если я не ошибаюсь в последних версиях ts уже исправили never и void теперь never будет выдавать ошибку в любом случае пример: `f = (arg: never) => {}` раньше `f() // ok` сейчас `f() // error` а также `f = (arg: void) => {}` раньше `f() // error нужно передать аргумент равный undefined` сейчас `f() // ok` по идее теперь void является пустым множеством, а never является недопустимым типом, как при `type key = string | number type a = key & string ` ts в нутри себя это превратит в `string & string | string & number` второй юнион вернет never, логическую ошибку типа и отсечется от результата, а void который является как раз таки пустым множеством, теперь может попасть в тип как возможный тип равный пустому множеству если установленный для чего либо тип являет логической ошибкой (если значение юнион не определен даже как пустое множество, чего раньше добится было нельзя) то будет ошибка в любом случае, как и должно быть
@atlantatesla9348
@atlantatesla9348 4 ай бұрын
Всегда думала, что `{}` это просто пустой объект. Спасибо тебе!
@ayub_begimkulov
@ayub_begimkulov 4 ай бұрын
рад помочь!
@andreytikhonov5477
@andreytikhonov5477 Жыл бұрын
Очередной суперский контент от Аюба 😍🥰
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@роматарасов-о8л
@роматарасов-о8л Жыл бұрын
крутые темы очень нравится что ты уделяешь внимание таким "фундаментальным тонкостям" в то время как все остальные просто пишут hello world хочется увидеть от тебя видосы посвященные сложным кейсам в типизации
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Сложные кейсы рассмотрим обязательно после покрытия «продвинутой базы». Спасибо за фидбэк!
@DenisB-d5f
@DenisB-d5f Жыл бұрын
Найс тема, дякую Подразобрался с типом {}, с которым под прошлым видео не мог понять в чем прикол
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо за фидбэк!
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Лучшее видео по ТС и этим типам))
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@shakapaker
@shakapaker Жыл бұрын
по тайпскрипту нравяться темы, очень полезно
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Рад, что было полезно.
@yunglocokid1457
@yunglocokid1457 4 ай бұрын
по идее еще удобнее написать function exhaustiveCheck(x: never): never { throw new Error("Didn't expect to get here"); } спасибо за полезный контент)
@ayub_begimkulov
@ayub_begimkulov 4 ай бұрын
Я не фанат такого подхода, так как в рантейме ошибка может быть, если в типизации что-то не учли)
@d1mas1k2KA
@d1mas1k2KA Жыл бұрын
Очень хороший контент, продолжай в том же духе
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@2difficult2do
@2difficult2do Жыл бұрын
Очень очень полезные видео. Максимально по делу и полезно. Спасибо.
@nouchance
@nouchance Жыл бұрын
Spasibo bratan
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
pozhaluysta
@masserrackheim5358
@masserrackheim5358 Жыл бұрын
Уникальный контент!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@МаксимИсаев-ъ5о
@МаксимИсаев-ъ5о Жыл бұрын
Мое почтение!
@amangeldi3424
@amangeldi3424 Жыл бұрын
Видео просто класс, больше видосиков по тс пожалуйста
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо
@endlessWay105
@endlessWay105 Жыл бұрын
Спасибо за полезный пример 2 - классное объяснение про never в условных типах. Не мог нигде найти инфу.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Круто! Рад помочь)
@mercury_2379
@mercury_2379 Жыл бұрын
комментарий в поддержку канала
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@artyomtaranenko2267
@artyomtaranenko2267 Жыл бұрын
Давай больше TS))
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Обязательно!
@dmytroz.2084
@dmytroz.2084 Жыл бұрын
круто круто круто! то что доктор прописал! Спасибо Аюб!
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо за фидбэк!
@dfkadyr
@dfkadyr Жыл бұрын
Спасибо
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
пожалуйста
@kirillboychenko7724
@kirillboychenko7724 Жыл бұрын
спасибо большое аюб,
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Пожалуйста!
@from_brest2631
@from_brest2631 Жыл бұрын
Держи лукас, норм материальчик
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо!
@anton7p704
@anton7p704 Жыл бұрын
спасибо
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
пожалуйста!
@smoke2638
@smoke2638 5 ай бұрын
спасибо!))
@ПетрПетров-ж9е
@ПетрПетров-ж9е Жыл бұрын
Аюб, спасибо за твои видео. Подскажите пожалуйста это одно и тоже или есть различия. Тип выводит нормальный либо я плохо тестирую не понятно))) function shuffle(array: T[]): T[] {} function shuffle(array: T): T {}
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Не, я думаю в таком случае нормально будет все. Но я бы все равно по первому написал бы лучше.
@alexandroppolus
@alexandroppolus Жыл бұрын
4:40 Можно написать Fn extends (...args: never[]) => unknown Функция с такими параметрами является наиболее "общей", т.е. грубо говоря, если в параметры такой функции будут передавать только значения never, то мы можем подставить туда свою функцию, принимающую, допустим, number, который более широкий, чем never. Это явление в типизации называется "контравариантность". Но тут есть спорный момент: функцию (...args: never[]) => unknown можно вызвать вообще без параметров, и по идее в переменную такого типа нельзя ставить функцию с хотя бы одним обязательным параметром. Вероятно, это упрощение TS, а может, починят когда-нибудь.
@zohnannor
@zohnannor 2 ай бұрын
хоть кто-то про контрвариантность упомянул!
@rustamakhmetyanov4404
@rustamakhmetyanov4404 Жыл бұрын
Все круто, спасибо, вижу коменты от начинающих которые просят то, что уже есть в ютубе, в слитых курсах и т.д. Слушать их или нет дело конечно твоё, но твой контент уникальный среди всего этого однообразного, думаю многие согласятся со мной, так что продолжай в том же направлении. Ещё раз спасибо. P. S. Я сам джун опыта пару месяцев =)
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Спасибо за фидбэк! В плане контента можешь не волноваться, планирую раскрывать темы для людей, кто уже имеет хотя бы большой опыт.
@jamjam3337
@jamjam3337 Жыл бұрын
👏👍
@omak3313
@omak3313 Жыл бұрын
Пока что не начинал изучать TS, но скоро начну. Всё из этого ролика актуально для TS 5.0, релиз которого вышел на днях?
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в Жыл бұрын
Да, новый стандарт не отменяет старый, а расширяет его.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Да, все актуально кончено же. У TS не semver, так у них не бывает больших мажоров.
@xoxo2880808
@xoxo2880808 Жыл бұрын
@@ayub_begimkulov а по декораторам разве у них там не braking change будет?
@romanryaboshtan9270
@romanryaboshtan9270 Жыл бұрын
cool, прокачивает навык ts, я много использовал ts, но не сильно углублялся...
@jqueryscripter6827
@jqueryscripter6827 2 ай бұрын
03:12 Когда unknown не будет правильно работать? Вместо any можно: function wrap(fn: (...args: A) => R) { return function wrapped(...args: A) { return fn.apply(null, args); }; }
@СофьяИванова-д6ж
@СофьяИванова-д6ж Жыл бұрын
привет, сними пожалуйста подробно про Mapped types
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Да, в планах есть заснять видео на эту тему. Должно выйти скоро на канале.
@RuslanDasaev-f7f
@RuslanDasaev-f7f Жыл бұрын
8:12 а почему, если поменять стрелку на обычную функцию, то тип будет void ?
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Видимо какой-то баг TS)
@CJIu3eHb
@CJIu3eHb Жыл бұрын
Получается, что в примере с FilterTest (11:20) можно использовать never в качесте Omit для union.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Да, примерно так)
@CJIu3eHb
@CJIu3eHb Жыл бұрын
@@ayub_begimkulov Хотя, конечно, в данном случае проще использовать Extract вместо трюка с never. Кстати, ты успел опередить Ulbi TV с выходом ролика, он тоже про exhaustiveCheck и typeguard говорил и прочее.
@alexandersmirnov3161
@alexandersmirnov3161 Жыл бұрын
Расскажи про satisfies/infer
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Да, есть в планах покрыть эту тему.
@dimasheiko
@dimasheiko Жыл бұрын
Лайк, если заметил смену футболки 😅
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Снимал в разные дни)
@whiteguards43
@whiteguards43 Жыл бұрын
5я минута, что такое констрейнт?
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
констрейнт - ограничение. в том случае я говорил именно про ограничение дженерика. я объяснял эту тему более детально в моем видосе по дженерикам.
@artyomtaranenko2267
@artyomtaranenko2267 Жыл бұрын
А как же arr.filter(Boolean) ?) Или я чего-то не понял
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
А можешь таймкод отправить? Не понимаю о чем ты.
@artyomtaranenko2267
@artyomtaranenko2267 Жыл бұрын
@@ayub_begimkulov 13:48. Скорее всего я не так понял
@zohnannor
@zohnannor 2 ай бұрын
2:56 хватило бы сказать "контрвариантность" и все
@gh8499
@gh8499 Жыл бұрын
Почему в первом примере нельзя написать fn: function ? И не нужно ссылаться на какую-то "странную" работу тайп скрипта, потому что ты сам указал extends.
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Если ты про 3:51, то это обучающий пример. Да можно так и не писать, но есть много случаев, когда тебе придется использовать дженерик и нужно знать, что для аргументов функции unknown не подойдет. Постараюсь в следующий раз уделить таким моментам больше внимания. Спасибо за фидбэк!
@sykalovandrey6090
@sykalovandrey6090 Жыл бұрын
Any же наследуется от unknown
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
первый раз такое слышу))
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в Жыл бұрын
Never say never 🤣
@ayub_begimkulov
@ayub_begimkulov Жыл бұрын
Ok.
Разбираем все utility types в TypeScript
36:32
Ayub Begimkulov
Рет қаралды 6 М.
HELP!!!
00:46
Natan por Aí
Рет қаралды 65 МЛН
TypeScript #13 Утилиты (часть 1)
21:43
codeBurger
Рет қаралды 5 М.