Как Zod лечит РОДОВУЮ травму Typescript

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

Евгений Паромов | Front-end

Евгений Паромов | Front-end

Күн бұрын

Пікірлер: 46
@BOCbMOU
@BOCbMOU 8 ай бұрын
Проблема с зодом в том, что его использование приводит к тому, что у нас появляется 2 источника правды: тайпскрипт и сам зод. Почему? Потому что схему зода можно преобразовать в тип тса, но тип тса нельзя преобразовать в зод (да, есть инструменты, типа ts-to-zod, но они лишь преобразовывают тип в схему, но нет лайвтайм проверки при изменении типа). В итоге нам либо получать все внешние типы из зода, что "очень удобно", либо иметь отдельно схему и отдельно тип. Можно, конечно, сравнивать полученный из зода тип с типом из тса, но это костыль. А ещё зод один из самых медленных валидаторов. В итоге лично я перешёл с zod на ajv и теперь генерирую схему на основе типа, а не наоборот. И любое изменение типа сразу же генерирует тс ошибку. И вот это уже действительно 1 источник правды - типы. В идеале вообще использовать runtipes или аналоги, парсящие сами тс типы, они на 1-2 порядка быстрее обычных валидаров, но там есть нюансы с компилятором.
@paromovevg
@paromovevg 8 ай бұрын
Генерировать zod на основе типов или генерировать json схемы на основе типов, одно и тоже. Любая генерация это мутотень, как по мне. Dx у такого решения хуже. Zod единственное решение, в котором можно обойтись совсем без генерации Zod - самое простое и универсальное решение, из возможных. Но да, что бы работал один источник правды - нужно все типы описывать схемами. Схемы похуже читаются Да zod медленнее, но у него и специфика другая, он больше сделан под front-end и у него много всего заточено под валидации форм. Zod идеален для тех, кто только начинает свой путь безопасного ts, так как это самый универсальный инструмент. А дальше можно под специфику подобрать более профильный инструмент + у zod есть трансформации, что действительно позволяет делать приятные штуки, по типу превращения всяких строковых дат в Date и парсинга вложенных строковых представлений
@BOCbMOU
@BOCbMOU 8 ай бұрын
​@@paromovevg > "Генерировать zod на основе типов или генерировать json схемы на основе типов, одно и тоже." Именно поэтому генерация схемы из типа не очень полезна, т.к. после генерации у тебя нет никакой связи между типом и схемой. А того же ajv сначала прописывается тип, а только потом строится схема на основе тс ошибок, которые у тебя будут в схеме, пока она не удовлетворит сам тип. То есть генерации схемы как таковой вообще нет. А если мы говорим о каких-нибудь runtipes, то тут вообще никакой реальной схемы нет, только тип в тсе. > "Zod - самое простое и универсальное решение, из возможных." Спорное заявление. > "что бы работал один источник правды - нужно все типы описывать схемами. Схемы похуже читаются" Это во-первых, а во вторых все типы через зод не опишешь. Вернее можно, но не будешь же ты те же пропсы компонентов через него описывать? А прочие внутренние типы? В итоге у нас всё равно 2 источника правды. > "Да zod медленнее, но у него и специфика другая, он больше сделан под front-end" Как это выражается? Чем он превосходит тот же ajv или runtipes? > "у него много всего заточено под валидации форм." Очень полезно. Кто и зачем будет валидировать формы зодом? Кто вообще сегодня будет работать с формами без библиотеки для форм? А если это одна маленькая форма на весь сайт, то тут даже жс не нужен, хтмла хватит. > "Zod идеален для тех, кто только начинает свой путь безопасного ts, так как это самый универсальный инструмент." Опять же, спорное заявление. Чем он именно лучше аналогов? Чем он универсальнее? > "+ у zod есть трансформации" У аналогов они тоже есть. Такое мнение имеет право на жизнь, но заявления слишком категоричны. Тем более заявление про 1 источник правды в принципе ложно. Если бы видео было про то, что валидация в тсе нужна, пользуйтесь валидаторами, но лично я предпочитаю зод и вот почему..., то это одно, но посыл больше похож на рекламу собственного курса, чем на относительно объективное мнение, имхо.
@CJIu3eHb
@CJIu3eHb 8 ай бұрын
@@BOCbMOU Вообще-то это и есть реклама курса. Насчет того, что у zod нет одного источника правды я не ухватил мысль. Может что-то не так понял. На мой взгляд, источник правды один - это схема. Другое дело, что читается она действительно сложнее, чем типы в чистом виде.
@paromovevg
@paromovevg 8 ай бұрын
Это не просто рекламный видос, это первый урок курса. но если бы вы досмотрели до конца вы бы и runtypes там увидели и json schema и другие альтернативы > а только потом строится схема на основе тс ошибок, которые у тебя будут в схеме, пока она не удовлетворит сам тип В zod тоже так же можно, сделать тип, и потом строить схему пока не удовлетворит от ts. Но никто так не делат, потому что это описание одной структуры данных 2 раза Но с другой стороны можно не делать эту двойную работу, а сначала написать схему, а потом просто вывести на её основе тип. > "Zod - самое простое и универсальное решение, из возможных." Среди ts-first, самый популярный по скачиваниям. Поддерживает вообще любые структуры данных и сценации использования. ajv популярней в принципе, но он ограничен просто схемой, и не поддерживает работу с формами и преобразования > Очень полезно. Кто и зачем будет валидировать формы зодом? Видимо у нас разный опыт, да форму из 2х полей зодом валидировать нет смысла, но бывают вещи и посложнее, и тут я видел много убогих самописов, которые изи zod ом заменяются Тогда интеграция с react-hook-form очень хорошо работать начинает > "Да zod медленнее, но у него и специфика другая, он больше сделан под front-end" ajv - многословный, или извольте генерировать на основе типов rutupes вообще уже почти год не пооддеривается особо и 200к скачиваний против 7кк у zod zod - поддерживает как и валидацию форм, так и работу со схемами + трансформации и много интеграций Как уже говорил выше, решение не идеальное, и под специфику лучше есть (например ajv для валидации api запросов) Но zod можно использовать для любого кейса unknown -> строгий тип. И под этим я понимаю универсальность
@BOCbMOU
@BOCbMOU 8 ай бұрын
@@CJIu3eHb речь про источники правды для всего приложения. И тут у нас за типизацию отвечают как тс типы, так и зод схемы.
@thesweetlife843
@thesweetlife843 8 ай бұрын
когда чертову cms продолжим прогать ?
@alexplay9972
@alexplay9972 8 ай бұрын
Поддерживаю
@paromovevg
@paromovevg 8 ай бұрын
Скоро все будет
@kabulzhan
@kabulzhan 8 ай бұрын
Респект тебе, спасибо
@vladislavbulanov625
@vladislavbulanov625 7 ай бұрын
ролик еще не досмотрел просто ставлю лайк за то как красиво обосрал астрологов)
@awenn2015
@awenn2015 7 ай бұрын
3:09 те кто по опытнее на такие "не типизированные данные" кидают валидации от Joi и все, нет никаких проблем 20:42 тут ты правильно подметил, стоит попробовать использовать зод на фронте, надеюсь там есть не только проверка типов но и допом можно накатить валидации как в joi
@ya.siddik
@ya.siddik 8 ай бұрын
вижу отсылку в названии видео😂
@wardxela
@wardxela 8 ай бұрын
$mol is everywhere
@nikola_antip
@nikola_antip 8 ай бұрын
что насчёт valibot?
@Mytest437
@Mytest437 8 ай бұрын
"Авось" это великий бог 😄
@GAccountMe
@GAccountMe 7 ай бұрын
А по стартапу с нуля будет продолжение? Уже давно не было выпусков😂.
@paromovevg
@paromovevg 7 ай бұрын
Продолжение на моей платформе micro-courses.ru/course/micro-courses-dev На ютуб этот формат смотрят так себе
@GAccountMe
@GAccountMe 7 ай бұрын
@@paromovevg уже вчера нашел, спасибо….оказалось уже два новых видео есть, уже и их посмотрел и опять жду продолжения!👍
@dmitriy4415
@dmitriy4415 8 ай бұрын
Есть valibot который очень лёгкий
@dkuba
@dkuba 8 ай бұрын
Ну посмотри тогда размер пакета в npm Zod меньше весит чем Valibot. или я не прав?
@glebexpo5302
@glebexpo5302 8 ай бұрын
годно жеж!
@abbze8272
@abbze8272 8 ай бұрын
Сколько же костылей навалили на js, не успеваешь изучать :) Чем больше разрабатываешь на нем - тем больше хочется уйти в какой-нибудь с++ или java.
@RamaRama-qv3jo
@RamaRama-qv3jo 8 ай бұрын
Очень не хватало такого контента!
@alexdr1279
@alexdr1279 8 ай бұрын
Я так и сделал. Это дошло уже до шизофрении. В js инструмент на инструменте инструментом погоняет. Потому что ни один не делает работу хорошо. В ts не лучше, хотя и он инструмент над js.
@Александр-э6ж3м
@Александр-э6ж3м 8 ай бұрын
Современный фронт на джаве или плюсах не напишешь Про сервер я молчу, там подобные языки топ
@alexdr1279
@alexdr1279 8 ай бұрын
@@Александр-э6ж3м ну я имел ввиду вообще с фронта ушел. Как часто говорят в фильмах... Слишком стар я стал для этого дерьма).
@uszakow
@uszakow 8 ай бұрын
Ну да ну да. Пример из самого видео - бэкэнд выслал не пойми какие данные, пользователь в качестве эксперимента поменял что-то в localStorage. Но виноват, конечно же, фронтэнд и js 😆
@Indigo00757
@Indigo00757 8 ай бұрын
Слишком много воды... По сути, важного, от силы 20%....
@MsSofull
@MsSofull 8 ай бұрын
typescript делает простые вещи сложными, а сложные any... В итоге все равно в обычный js собирается, так может typescript - лишнее ? 😀
@paromovevg
@paromovevg 8 ай бұрын
Не представляю как без ts делать проекты на 100к строк кода и больше
@StarkElessar
@StarkElessar 8 ай бұрын
согласен, но рил чем больше проект разростается - тем сложнее держать всё в голове :_( это слёзы, но как же заколебал typescript..... почему тяжело сделать нечто шедевральное и крутое как c#.....?????
@sergey53689
@sergey53689 8 ай бұрын
@@paromovevg ты просто не умеешь
@Phoenix_coding
@Phoenix_coding 8 ай бұрын
ZOD
@sergey53689
@sergey53689 8 ай бұрын
херня какая-то такая же как и typescript
Zod для валидации API и форм
20:19
Михаил Непомнящий
Рет қаралды 13 М.
Правила быстрого обучения, которые ТЕБЕ НЕ ПОНРАВЯТСЯ
21:28
Евгений Паромов | Front-end
Рет қаралды 9 М.
Amazing remote control#devil  #lilith #funny #shorts
00:30
Devil Lilith
Рет қаралды 14 МЛН
The Singing Challenge #joker #Harriet Quinn
00:35
佐助与鸣人
Рет қаралды 32 МЛН
Wait… Maxim, did you just eat 8 BURGERS?!🍔😳| Free Fire Official
00:13
Garena Free Fire Global
Рет қаралды 9 МЛН
Which team will win? Team Joy or Team Gumball?! 🤔
00:29
BigSchool
Рет қаралды 15 МЛН
Dependency Inversion - главный инструмент Архитектора
37:17
Евгений Паромов | Front-end
Рет қаралды 6 М.
React-приложение на TypeScript
41:29
Михаил Непомнящий
Рет қаралды 69 М.
Лучшая Front-end Архитектура в 2023
25:20
Евгений Паромов | Front-end
Рет қаралды 15 М.
Learn Zod In 30 Minutes
31:03
Web Dev Simplified
Рет қаралды 150 М.
Почему FSD/SOLID/ООП не работает? Как писать хороший код?
18:00
Евгений Паромов | Front-end
Рет қаралды 6 М.
Zod + Generics is HEAVEN
4:41
Matt Pocock
Рет қаралды 60 М.
Amazing remote control#devil  #lilith #funny #shorts
00:30
Devil Lilith
Рет қаралды 14 МЛН