Typescript новая фича которую так ждали

  Рет қаралды 3,180

Gregor Tokarev

Gregor Tokarev

Күн бұрын

Пікірлер: 17
@jgkdmdevienjjgg8866
@jgkdmdevienjjgg8866 2 ай бұрын
filter((itm): itm is number => itm !== undefined) Можно вот так в старом тайпскрипте. Инлайновый typeguard Генерик версия для особо упоротых: itm is NonNullable
@Selavy82
@Selavy82 2 ай бұрын
костыли... системой типов это решаться должно. undefined должен быть потомком всех типов, тогда и union специалььный для него не нужен. Попробуйте Elm - надеюсь, там-то хоть по-нормальному сделано.
@equim7363
@equim7363 Ай бұрын
"Проверка на труси"😁😁
@YuriiLebid-op1xv
@YuriiLebid-op1xv 3 ай бұрын
Спасибо, полезно
@BOCbMOU
@BOCbMOU 2 ай бұрын
Автор никогда не слышал про тайп гуард? В чём проблема его добавить в функцию фильтра? Да, это условно лишний код, но и ситуация где это надо редко встречается.
@kirillgimranov4943
@kirillgimranov4943 3 ай бұрын
В чем фича то? Фильтрация происходит все же в рантайме, компайл-тайм об этом знать не должен
@VitalyVasilega
@VitalyVasilega 3 ай бұрын
Автор всё доходчиво объяснил и показал! Раньше действительно была проблема, что TS не отслеживал что мы фильтруем и тип, который он вычислил вначале использовался везде. Это заставляло вставлять дополнительные проверки, чтобы можно было обратиться к объекту. Теперь с этим проблем не должно быть.
@kirillgimranov4943
@kirillgimranov4943 3 ай бұрын
@@VitalyVasilega это должна быть проблема не языка, а статических линтеров Как компилятор угадает рантаймовый фильтр? В сигнатурах типов указываются все ограничения, остальное - линтинг
@MaxSvargal
@MaxSvargal 2 ай бұрын
@@kirillgimranov4943 боже мой, ts это не язык, а надстройка и статический анализатор. Как угадать? Угадывать не нужно, всё видно по AST. Почему-то Elm может, ReScript (OCaml) может, а в ts только сейчас осилили.
@jgkdmdevienjjgg8866
@jgkdmdevienjjgg8866 2 ай бұрын
@@kirillgimranov4943 C такой логикой type narrowing существовать не должен, а он есть. Тайпскрипт выводит типы и из того что написано уже заранее понятно что там undefined на выходе быть не должно. Фича в том что тайпскрипт стал лучше выводить типы, как я понимаю, а это самый наболевший пример, который очень часто проявляется. Тайпскрипт это в каком то смысле линтер и есть. Есть стадия компиляции (транспиляции), а есть стадия тайпчекинга. И компиляцию можно запустить без тайпчекинга
@gh8499
@gh8499 2 ай бұрын
@@kirillgimranov4943 а в чем сложность угадать? ты же знаешь что будет возвращать этот фильтр
@banzaika
@banzaika 3 ай бұрын
капец ты быстро обрастаешь)
@kirillgimranov4943
@kirillgimranov4943 3 ай бұрын
просто голову помыл
@daishinkan12
@daishinkan12 2 ай бұрын
Всегда игнорировал такое предупреждение. Это только начинающие обращаются внимание на такое
@loa2395
@loa2395 3 ай бұрын
Капец ты долгий, у purpleschool давно уже про это рассказано и намного лучше
@equim7363
@equim7363 Ай бұрын
Может ты ещё и англоязычный Ютуб предложишь чекать?🤦🏻‍♂️
@mykhailokurov8246
@mykhailokurov8246 Ай бұрын
const list = [1, 2, undefined]; list.filter((i): i is number => i !== undefined).forEach(e => console.log(e.toString()))
Советский мультфильм про нашу жизнь !
13:49
Дедушка Аргентинца
Рет қаралды 4,6 МЛН
How I Turned a Lolipop Into A New One 🤯🍭
00:19
Wian
Рет қаралды 10 МЛН
She's very CREATIVE💡💦 #camping #survival #bushcraft #outdoors #lifehack
00:26
啊?就这么水灵灵的穿上了?
00:18
一航1
Рет қаралды 26 МЛН
Крутой фокус + секрет! #shorts
00:10
Роман Magic
Рет қаралды 36 МЛН
Программисты-самоучки... Слушайте внимательно.
22:45
Евгений Афанасьев
Рет қаралды 94 М.
Полиморфизм на практике
10:42
ExtremeCode
Рет қаралды 179 М.
Пишем реальный CI/CD пайплайн | GITLAB CI/CD на практике
19:10
How I Turned a Lolipop Into A New One 🤯🍭
00:19
Wian
Рет қаралды 10 МЛН