Learn Zod In 30 Minutes

Поділитися
Вставка
  • Опубліковано 26 сер 2024

КОМЕНТАРІ • 163

  • @d.sherman8563
    @d.sherman8563 Рік тому +19

    I see a bunch of questions asking why you would need this when typescript already provides you with compile time type safety.
    Zod provides you with runtime type safety and is primarily for validating things you don’t control such as API input and form input validation.
    You already must validate these so having a library that lets you define your schema’s declaratively and derive your DTO types is awesome. It also lets you share the exact same validation logic between Frontend and backend by using same schema.
    Deriving new schema’s and their types from existing ones also really helps reduce validation logic and types you have to write. In many cases for example, the update schema will just be a partial create schema with added required if etc, which is like 2 lines of extra code with Zod for new schema and types. Your errors are also strongly typed.

    • @z-aru
      @z-aru Рік тому

      Some people also validate API response, is it really good to also runtime validate API response on The Frontend?

  • @dtesta
    @dtesta 7 місяців тому +8

    Dude! I watch A LOT of tutorials and this one was VERY good! No slow pace lingering or repetitions. Straight to the point and good, solid explanations. Very good job! Kudos!

  • @judemusyoki7052
    @judemusyoki7052 Рік тому +15

    Honestly Kyle the way your content has advanced my career, just wanted to say thanks 🙏🏾

  • @robtangled8816
    @robtangled8816 Рік тому +25

    Kyle, this video was great. I would love to see an example of using Zod with and ODM like Mongoose. Maybe a short or 5' video.

  • @acollierr17
    @acollierr17 Рік тому +15

    Kyle, thanks for this video! I only know of Zod by name and have seen examples of it being used in code. But after this crash course, I can see why it's praised! I look forward to implementing this library in future projects of mine.

    • @a7u412
      @a7u412 Рік тому +1

      hi anthony, I spotted you here

  • @CuongVu-yy4cg
    @CuongVu-yy4cg Рік тому +8

    Please post more typescript content. I really love it, thank you Kyle

  • @Imjoshnewton
    @Imjoshnewton 11 місяців тому +1

    After using Zoe minimally as part of tRPC for a while now I started adding it into my forms using React Hook Form. This video was super helpful in creating some more advanced schemas.

  • @tesla1772
    @tesla1772 Рік тому +2

    today i literally started with zod for my express backend and here you come with an video💯💯

  • @ozzyfromspace
    @ozzyfromspace 3 місяці тому

    exquisite crash course, Kyle! I've been in python-land way too long and started to forget things lol

  • @peteremad5228
    @peteremad5228 Рік тому

    thanks for this video, Kyle, it put my leg into the library within half an hour

  • @robtangled8816
    @robtangled8816 Рік тому +5

    Thanks a lot, Kyle. Your content means a lot for some of us.

  • @georgepliskin5199
    @georgepliskin5199 7 місяців тому

    Amazing presentation, easy to watch and super useful. Great job!

  • @zlackbiro
    @zlackbiro Рік тому +1

    I work for one industry company and we use Zod everywhere. Super awesome, easy to use... Simply, you cannot resist using it once you try it. Even more, you can use it in react, vanilla js, aor eany odther js framework/library. I validate my forms on the frontend side when i do post requests. You can even validate reponses. Very powerful and awesome library!

    • @petter9078
      @petter9078 Рік тому

      Hey! Very cool. Care to share some typical use cases? You mentioned validate responses? Im struggling to understand whether zod is mostly used server side or client side. I initially thought it would be used to validate some request made by a client to the server. Some security stuff(?) i might be talking nonsense here.

  • @w2ytube
    @w2ytube Рік тому

    Thanks Kyle, great vid!!
    I love this new format. You rock!!

  • @daleryanaldover6545
    @daleryanaldover6545 Рік тому

    Tried Zod yesterday and I am glad that I don't need Typescript for it to run.

  • @pablocoronel784
    @pablocoronel784 Рік тому +2

    Hi Kyle, thanks for your dedication. I'm learning a lot of best practises thx to you. Im struggling a lot with the proper way to handle form validations with react. If you could explain how you consider the best way I would really appreciate.

    • @wchorski
      @wchorski Рік тому +2

      look into using Formik

    • @nymusicman
      @nymusicman Рік тому +1

      If I may throw in another suggestion, react-hook-form is awesome!

  • @user-gm3lg8gp3m
    @user-gm3lg8gp3m 6 місяців тому

    you are amazing at explaining topics! it is insane

  • @tonyeneh8194
    @tonyeneh8194 4 місяці тому

    Thanks a lot Kyle. This helped me fix a bug

  • @focusroom_
    @focusroom_ Рік тому

    This is a great tool, thank you for the clean and simple explanation

  • @kompiuterizmas
    @kompiuterizmas Рік тому +1

    Thank you for, as always, great video. But I would like to ask for additional information about how to make password field and repeated password field comparison using Zod. If it is possible.

  • @algo-wave
    @algo-wave Рік тому

    Great tutorial. Was really thinking of giving this Zod a try

  • @YaBoiMoustafa24
    @YaBoiMoustafa24 2 місяці тому

    Great tutorial, thanks

  • @andresantos-ud4ht
    @andresantos-ud4ht Рік тому

    Amazing explanation. Clean and simple. Thanks !!!

  • @akashm1240
    @akashm1240 Рік тому

    Hi kyle, big fan. Sometimes with your videos being long I feel like I won't be able to complete it. How about breaking the video into a playlist. That would really help me a lot. Thanks

  • @_the_one_1
    @_the_one_1 Рік тому

    Thank you so much Kyle, awesome as always!

  • @satellitesage2487
    @satellitesage2487 7 місяців тому

    Great video, but I think it could have been made more structured so that we don't have to go back and forth between versions. It could have been better if the flow of the video does not include deleting all of the operators that was just discussed, in this way, it could have provided a better overview, and it would be easy to sum everything up. Nonetheless, learned a lot from this video!

  • @gmjitendra
    @gmjitendra 5 місяців тому

    Excellent . thank you.

  • @fvbixn
    @fvbixn Рік тому

    Thanks for the video! I really love Zod and I’m using it in recent projects, together with tRPC. Great to see all the abilities it has.

  • @Chrisverine
    @Chrisverine Рік тому

    I like how the symbol from the thumbnail is from Clark

  • @GeorgeDonnelly
    @GeorgeDonnelly 7 місяців тому

    This is like the thriller movie of tech tutorials.

  • @EngineerNick
    @EngineerNick Рік тому

    Thankyou awesome video I'll be using this immediately! :) Small error at 23:31 Object keys are always stored as strings in javascript. If you made the change you mention there actually would not be a parse error. Try console.log(z.record(z.string(), z.number()).safeParse({1:3})) --> { success: true, data: {1:3} } Only the Map and set types support other types as keys. I was super disappointed when recently discovering this, but luckily this was after Map and Set became available. I am still confused why typescript allows you to give Record anything other than string as first parameter. Maybe they were expecting a change to the standard?

  • @ramiworkstation
    @ramiworkstation 2 дні тому

    Thank you

  • @joel-rg8xm
    @joel-rg8xm 4 місяці тому

    Any video on Valibot ? (ZOD's half bumdle size competition)

  • @vitalysuper3193
    @vitalysuper3193 9 місяців тому

    I do not care what validator to use as long as it have auto-generator tool. thats why i love json schema it became a standard and there are many tools for it

  • @055_meetmakwana9
    @055_meetmakwana9 11 днів тому

    Hey kyle, Amazing explanation!
    I just have one question, Is there any inbuilt way to perform actions when validation fails? Like if i have schema that validates the inputs from the FORM, so if one of the validation fails, i want show a toast with the error message i have given inside zod validation schema.
    For now i have managed it with useEffect hack!, but I would really like to the standard way!
    Thanks!

  • @petter9078
    @petter9078 Рік тому +1

    Could someone share typical use cases for using Zod? I was thinking about maybe mapping response data? Im pretty new to typescript still and have done a little zod programming. Would be nice to know.

  • @olg3089
    @olg3089 3 місяці тому

    Cool stuff bro

  • @minadivlogs4790
    @minadivlogs4790 Рік тому

    Hi Kyle, I want to have a challenge on the frontend. I have around 10 years of experience. I have been watching your videos.

  • @mohlalathato7078
    @mohlalathato7078 Рік тому

    This video is straight amazing.

  • @YOUdudex
    @YOUdudex Рік тому

    amazing video, thanks!

  • @maid768
    @maid768 Рік тому +1

    Question: can‘t you just create a userModel for your user and then do „const user: userModel = {…}
    Because it will also check if you used the correct model properties and throw error if your value datatype doesn‘t match property datatype

    • @d.sherman8563
      @d.sherman8563 Рік тому +2

      This will work for object literals defined in your code. Zod is great for things like form validation, api input validation etc where you are not in control of what you’re validating.

  • @DiogoLScarmagnani
    @DiogoLScarmagnani 6 місяців тому

    I'm learning Zod and it is a very useful lib. I only miss an option to have rules for specific indexes (when z.array) or properties (when z.object). If someone knows how to make it, please share it with me, I'd appreciate it very much.

  • @psyferinc.3573
    @psyferinc.3573 11 місяців тому

    thank you for the video

  • @TypeScriptTV
    @TypeScriptTV Рік тому

    Do you have a recipe on how to validate type aliases using Zod? Instead of "z.string()" I would like to use my existing string type alias if possible. Any help would be appreciated! 🙏 Best, Benny

  • @Hades200082
    @Hades200082 Рік тому

    One use-case I've not been able to figure out... how do you get a Zod schema for an existing TypeScript type?
    For example, if you're using a third party pacakage/library and you want one of your types to have a property that is of a type declared in that package?

  • @Xe054
    @Xe054 Рік тому +1

    Zod feels well designed and easy to use even without completely understanding TypeScript. Can we use Zod instead of Mongoose? And would that even be a good idea?

    • @DarkzarichV2
      @DarkzarichV2 Рік тому +1

      Mongoose and Zod have different goals and different use cases. First of all, Mongoose is an ODM and used to access documents in db using object oriented paradigm while Zod is a schema validation tool. While Mongoose can do schema validation it's not its main thing and Zod can't do absolutely the most of things Mongoose does so they're pretty much not interchangeable.

    • @Xe054
      @Xe054 Рік тому

      @@DarkzarichV2 Thank you. I left out the part where using Prisma + Zod (from the t3 stack) could probably replace Mongo + Mongoose for a fullstack project. I like the documentation from the former tools and not so much from the latter tools. Good docs matter a lot to me.

    • @DarkzarichV2
      @DarkzarichV2 Рік тому

      @@Xe054 ah, this you definitely can. Not sure if Prisma support of MongoDB got any better or still preview but generally yes, Prisma will provide you type-safety and runtime validation while Zod will validate user input

  • @geforcesong
    @geforcesong Рік тому

    great tutorial, thanks

  • @andrewtran7948
    @andrewtran7948 7 місяців тому

    Is there support to switch this Zod schema over to Mongoose?

  • @graficandorealidades7561
    @graficandorealidades7561 Рік тому

    Hobby: ["Programming", "Weight Lifting", "Guitar]
    My man.

  • @TakeOnMe5
    @TakeOnMe5 Рік тому

    Looks like Yup but with better TS support and slightly more flexible I guess. I hope Formik will support Zod directly, without any adapters, just like Yup.

  • @daminipandey6490
    @daminipandey6490 Рік тому

    Hey. I'm just curious to know if it's possible to chain multiple regex expressions for the same input field and display different error messages .

  • @ffaadigital1473
    @ffaadigital1473 10 місяців тому

    great video

  • @celsomomade
    @celsomomade 11 місяців тому

    Hi. Can I just replace all my types(interface and type) with zod????

  • @bugignat
    @bugignat Рік тому

    great tutorial!

  • @bryson2662
    @bryson2662 Рік тому

    I love zod and this is a great video. I would recommend just staying away from TS enums btw.
    Also at the 13 mark you label the enums array as const and that's fine but personally for readability I would just say something like .
    const hobbies = z.enum(["hobby1", ....].

  • @billkolarik9423
    @billkolarik9423 Рік тому

    I'm curious is it possible to use the UserSchema as a map when fetching SQL data with the same name fields? I have experience doing this in C# but creating classes instead of objects.

  • @testaccount9420
    @testaccount9420 11 місяців тому

    ❤ thanks for the video

  • @TheGaneshshow
    @TheGaneshshow 8 місяців тому

    Thanks a lot bruh:)

  • @ThulasiRaman-po8lv
    @ThulasiRaman-po8lv Рік тому

    Hi Tutorial very awesome🙂 To Make React Redux Series. to helpful for latest Technology that's one

  • @binrueiyang2197
    @binrueiyang2197 11 місяців тому

    Thanks!

  • @mohammedabusada7513
    @mohammedabusada7513 Рік тому

    Hey Kyle, can you share the Notion notes page with us, thanks.

  • @abhiram6087
    @abhiram6087 Рік тому

    Make a video on React lifecycle.

  • @AbdulSamad-kn3ot
    @AbdulSamad-kn3ot Рік тому

    Kyle, Please use the dark theme in chrome devtools, white color hurts

  • @rishiraj2548
    @rishiraj2548 Рік тому

    Excellent 🎉

  • @emmanuelbonke7374
    @emmanuelbonke7374 Рік тому

    Hello Kyle, great content.
    Just a concern... From the way you defined and explained sod, seems to be similar to class validator...
    Can you probably do a video showing the pros and cons of the two...
    I use class-validator because of validation and most importantly api documentation....

    • @d.sherman8563
      @d.sherman8563 Рік тому +3

      It is similar, but takes a functional approach instead of OO. I think the strongest advantage it has is the ability to derive new validation schemas and their types from existing ones. All Zod methods are immutable so you can reuse existing schemas however you like. Say for example you have a UserSchema which has all fields mandatory including an id field. You can with just a few lines of code derive the validators and types for a CreateUserDTO schema by using UserSchema.omit({ id: true }), and an UpdateUserDTO schema with UserSchema.optional().required({id: true})
      You also get strongly typed errors that are specific for the schema.

    • @emmanuelbonke7374
      @emmanuelbonke7374 Рік тому +1

      @@d.sherman8563 Noted...
      Thanks for the clarification....

  • @CTILET
    @CTILET Рік тому

    How to began type on typescript if you dong like javascript?

  • @developerpranav
    @developerpranav 11 місяців тому

    discriminatedUnion is what I was looking for! Really glad I clicked your video first! Thanks! 😃

  • @LarsRyeJeppesen
    @LarsRyeJeppesen Рік тому

    What if you ALREADY have a type/interface defined?

  • @FaramarzF.R
    @FaramarzF.R 5 місяців тому

    سپاس

  • @grugbrain
    @grugbrain Рік тому

    Time to add Zod to my app.

  • @SteveRaynerMakes
    @SteveRaynerMakes Місяць тому +1

    13:18 const as const feels weird

  • @vinayjangra1401
    @vinayjangra1401 6 місяців тому

  • @Arciiix
    @Arciiix Рік тому

    I mean wow, I've just started using it yesterday and now your video comes out... a coincidence or fate?

  • @user-id3wi8ti8h
    @user-id3wi8ti8h Рік тому

    cool video

  • @llgmusic
    @llgmusic Рік тому

    This library seems really useful in conjunction with typescript. Thanks

  • @gobicorner
    @gobicorner Рік тому

    can zob be used for React-native ? or just for browsers ??

    • @YasinAkimura
      @YasinAkimura Рік тому +1

      As it's purely JS based it should work for react native too because react native runs on JavaScript first which will interact with native Modules

  • @Stealther11
    @Stealther11 Рік тому +1

    "Kneel before Zod!"
    -General Zod from 90's superman movie or something.

  • @nothiiiiiiiing
    @nothiiiiiiiing Рік тому

    i can finally write pythonic ts

  • @metinsut
    @metinsut Рік тому

    Perfect

  • @whitek6532
    @whitek6532 Рік тому

    have you used typia ? its 10000x faster than zod

  • @vella166
    @vella166 Рік тому

    Nice , Useful and Simplified video as usual,🔥

  • @zodberg
    @zodberg 2 місяці тому

    I love you too

  • @changNoi1337
    @changNoi1337 Рік тому

    The logo looks like the first xtc I ever took ;)

  • @SeanCassiere
    @SeanCassiere Рік тому +2

    With v3.20, there's a new .coerce pipe that's available, where you can attempt to coerce a value's data-type into something else.
    This could be useful where if you have an HTML form with a number input and you need to validation min/max. Using the .coerce pipe you can coerce the default input type of String into a Number and then validate it. It would look like this.
    z.object({
    // at input (ie. evt.target.value) will be string since basically everything from an HTML input is string.
    count: z.coerce.number().min(18).max(200)
    });

  • @dhanush_gh
    @dhanush_gh Рік тому

    Thank you 😊

  • @VtTraves
    @VtTraves Рік тому

    At 17:00 lets say we have array of friends. only if it was true.

  • @justsomeguy8385
    @justsomeguy8385 Рік тому +12

    Seems neat, but pretty overkill for most use cases. TS already does a great job, and having tuples and some tighter typing restrictions isn't really worth pulling in yet another library.

    • @d.sherman8563
      @d.sherman8563 Рік тому +9

      This is for validating things that you don’t control, such as form input and API input. You have to validate those things anyways so being able to declaratively define your validation and derive DTO types from the validation scheme is fantastic.

    • @allone258
      @allone258 Рік тому +2

      did u trust user input ?

  • @CW91
    @CW91 Рік тому

    Great video. But the few seconds at the end was cut before you said "...have a great day"

  • @spacecore2077
    @spacecore2077 7 місяців тому

    I never knew Stefan from Vampire Diaries was into Web Dev ...

  • @gosnooky
    @gosnooky Рік тому +1

    Everyone kneel to ZOD

  • @gojamoja6719
    @gojamoja6719 Рік тому

    cool

  • @HaaniJaber
    @HaaniJaber Рік тому

    Vercel until you get DDOS'd, not necessarily because it's cheaper, but other platforms have better tools to manage DDOS

  • @kamehameha22
    @kamehameha22 Рік тому

    zod is god

  • @spiritbass15920
    @spiritbass15920 Рік тому

    const as const this is a const one more const for good measure const

  • @jgoemat
    @jgoemat Рік тому

    Yes, Javascript/Typescript is all about more code

  • @andrews8733
    @andrews8733 Рік тому

    Where is this being utilized mostly? Seems like it might be useful in writing DSLs or some api middleware.

    • @d.sherman8563
      @d.sherman8563 Рік тому +1

      Form validation and API input validation.

  • @deadlydiminuendo2161
    @deadlydiminuendo2161 Рік тому

    Looks like Yup

  • @amjadcp4509
    @amjadcp4509 Рік тому

    #off topic : express or fastify

  • @barygold9175
    @barygold9175 Рік тому

    I have a Request, please. I would like to see a video that constructs a simple GUI using GO on Windows.
    Thank You.

  • @freespeech515
    @freespeech515 Рік тому +1

    Typescript is stupid for front end.