{"id":20299,"date":"2023-04-29T12:26:40","date_gmt":"2023-04-29T08:56:40","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/"},"modified":"2023-04-29T12:26:40","modified_gmt":"2023-04-29T08:56:40","slug":"learn-zod-in-5-minutes-17pn","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/","title":{"rendered":"\u0641\u0631\u0627 \u06af\u0631\u0641\u062a\u0646 &quot;\u0632\u0648\u062f&quot; \u062f\u0631 5 \u062f\u0642\u06cc\u0642\u0647"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\" >\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D9%87%D8%AF%D8%A7%D9%81_%D8%B2%D9%88%D8%AF\" >\u0627\u0647\u062f\u0627\u0641 \u0632\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A8%D8%B1%D9%BE%D8%A7%DB%8C%DB%8C\" >\u0628\u0631\u067e\u0627\u06cc\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%BE%D8%A7%DB%8C%D9%87\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u0627\u06cc\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%BE%D8%A7%DB%8C%D9%87\" >\u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D9%87%D8%A7\" >\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1_%D9%BE%DB%8C%D8%B4_%D9%81%D8%B1%D8%B6\" >\u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%AA%D8%AD%D8%AA_%D8%A7%D9%84%D9%84%D9%81%D8%B8%DB%8C\" >\u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#Enums\" >Enums<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%B2%D9%88%D8%AF_%D8%A7%DB%8C%D9%86%D9%88%D9%85%D8%B3\" >\u0632\u0648\u062f \u0627\u06cc\u0646\u0648\u0645\u0633<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#TS_Enums_%D8%A7%DA%AF%D8%B1_%D9%85%D9%85%DA%A9%D9%86_%D8%A7%D8%B3%D8%AA_%D8%A7%D8%B2_Zod_enums_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >TS Enums: (\u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 Zod enums \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1\" >\u0627\u0634\u06cc\u0627\u0621<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A2%D8%B1%D8%A7%DB%8C%D9%87_%D9%87%D8%A7\" >\u0622\u0631\u0627\u06cc\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\" >\u0627\u0646\u0648\u0627\u0639 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%DA%86%D9%86%D8%AF%D8%AA%D8%A7%DB%8C%DB%8C\" >\u0686\u0646\u062f\u062a\u0627\u06cc\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF_%D8%A7%D8%AA%D8%B5%D8%A7%D9%84\" >\u0627\u062a\u062d\u0627\u062f. \u0627\u062a\u0635\u0627\u0644<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF%DB%8C%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%A8%D8%B9%DB%8C%D8%B6_%D8%A2%D9%85%DB%8C%D8%B2\" >\u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%B3%D9%88%D8%A7%D8%A8%D9%82\" >\u0633\u0648\u0627\u0628\u0642<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%86%D9%82%D8%B4%D9%87_%D9%87%D8%A7\" >\u0646\u0642\u0634\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D9%87%D8%A7\" >\u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%88%D8%B9%D8%AF%D9%87_%D9%87%D8%A7\" >\u0648\u0639\u062f\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\" >\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7\" >\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/nabfollower.com\/blog\/learn-zod-in-5-minutes-17pn\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\"><\/span>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u0627\u0647\u062f\u0627\u0641 \u0632\u0648\u062f<\/li>\n<li>\u0628\u0631\u067e\u0627\u06cc\u06cc<\/li>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u0627\u06cc\u0647<\/li>\n<li>\u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647<\/li>\n<li>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627<\/li>\n<li>\u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636<\/li>\n<li>\u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc<\/li>\n<li>\n<p>Enums<\/p>\n<ul>\n<li>\u0632\u0648\u062f \u0627\u06cc\u0646\u0648\u0645\u0633<\/li>\n<li>TS Enums: (\u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 Zod enums \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f)<\/li>\n<\/ul>\n<\/li>\n<li>\u0622\u0631\u0627\u06cc\u0647 \u0647\u0627<\/li>\n<li>\n<p>\u0627\u0646\u0648\u0627\u0639 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/p>\n<ul>\n<li>\u0686\u0646\u062f\u062a\u0627\u06cc\u06cc<\/li>\n<li>\u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<\/li>\n<\/ul>\n<\/li>\n<li>\u0633\u0648\u0627\u0628\u0642<\/li>\n<li>\u0646\u0642\u0634\u0647 \u0647\u0627<\/li>\n<li>\u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627<\/li>\n<li>\u0648\u0639\u062f\u0647 \u0647\u0627<\/li>\n<li>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/p>\n<ul>\n<li>\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627<\/li>\n<\/ul>\n<\/li>\n<li>\u0646\u062a\u06cc\u062c\u0647<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%87%D8%AF%D8%A7%D9%81_%D8%B2%D9%88%D8%AF\"><\/span>\n<p>  \u0627\u0647\u062f\u0627\u0641 \u0632\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc (\u0627\u0628\u062a\u062f\u0627 \u0637\u0631\u062d\u0648\u0627\u0631\u0647)<\/li>\n<li>\n<strong>\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0644\u0627\u0633<\/strong> <strong>\u062a\u0627\u06cc\u067e\u06cc<\/strong> \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc (\u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0648\u0628\u0627\u0631 \u0646\u0648\u0634\u062a\u0646 \u0627\u0646\u0648\u0627\u0639)<\/li>\n<li>\u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631 (\u062a\u063a\u0630\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc)<\/li>\n<li>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0648\u0686\u06a9 (8 \u06a9\u06cc\u0644\u0648\u0628\u0627\u06cc\u062a)<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%BE%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u0628\u0631\u067e\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p>\u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627 Node\/Deno\/Bun\/Any Browser \u0648 \u063a\u06cc\u0631\u0647<\/p>\n<\/blockquote>\n<p><code>npm i zod<\/code><br \/>\n<code>import { z } from \"zod\";<\/code><\/p>\n<p>\u0628\u0627\u06cc\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f <code>strict: true<\/code> \u062f\u0631 \u0641\u0627\u06cc\u0644 tsconfig<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%BE%D8%A7%DB%8C%D9%87\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u0627\u06cc\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ creating a schema<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">User<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">username<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ extract the inferred type<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">User<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">User<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ { username: string }<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">user<\/span><span class=\"p\">:<\/span> <span class=\"nx\">User<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"na\">username<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Arafat<\/span><span class=\"dl\">\"<\/span><span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ parsing<\/span>\n<span class=\"nx\">mySchema<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">user<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ =&gt; \"tuna\"<\/span>\n<span class=\"nx\">mySchema<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"mi\">12<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ =&gt; throws ZodError<\/span>\n\n<span class=\"c1\">\/\/ \"safe\" parsing (doesn't throw error if validation fails)<\/span>\n<span class=\"nx\">mySchema<\/span><span class=\"p\">.<\/span><span class=\"nx\">safeParse<\/span><span class=\"p\">(<\/span><span class=\"nx\">user<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ =&gt; { success: true; data: \"tuna\" }<\/span>\n<span class=\"nx\">mySchema<\/span><span class=\"p\">.<\/span><span class=\"nx\">safeParse<\/span><span class=\"p\">(<\/span><span class=\"mi\">12<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ =&gt; { success: false; error: ZodError }<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%BE%D8%A7%DB%8C%D9%87\"><\/span>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">z<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">zod<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/ primitive values<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">bigint<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">boolean<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">date<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">symbol<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ empty types<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kc\">undefined<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kc\">null<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"k\">void<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ accepts undefined<\/span>\n\n<span class=\"c1\">\/\/ catch-all types<\/span>\n<span class=\"c1\">\/\/ allows any value<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">any<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">unknown<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ never type<\/span>\n<span class=\"c1\">\/\/ allows no values<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">never<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D9%87%D8%A7\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u062f\u0631 <strong>\u0632\u0648\u062f<\/strong> \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f <strong>\u06af\u0632\u06cc\u0646\u0647 \u0647\u0627<\/strong> \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u062e\u0631\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0627\u0646\u0646\u062f \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0646\u0648\u0639 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0628\u0632\u0646\u06cc\u062f<\/p>\n<p><code>z.string().optional()<\/code><br \/>\n<code>z.number().lt(5)<\/code><br \/>\n<code>optional()<\/code>  &#8211; \u0641\u06cc\u0644\u062f \u0631\u0627 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f<br \/>\n<code>nullable<\/code>  &#8211; \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0646\u06cc\u0632 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f <code>null<\/code><br \/>\n<code>nullish<\/code>  &#8211; \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f <code>null<\/code> \u06cc\u0627 <code>undefined<\/code><\/p>\n<blockquote>\n<p>\u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u0627\u0646\u06af\u0634\u062a \u0634\u0645\u0627\u0631\u06cc \u0627\u0632 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635 \u0631\u0634\u062a\u0647\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">max<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">min<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">length<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">email<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">url<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">uuid<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">cuid<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">regex<\/span><span class=\"p\">(<\/span><span class=\"nx\">regex<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">startsWith<\/span><span class=\"p\">(<\/span><span class=\"kr\">string<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">endsWith<\/span><span class=\"p\">(<\/span><span class=\"kr\">string<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">trim<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ trim whitespace<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">datetime<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ defaults to UTC, see below for options<\/span>\n<\/code><\/pre>\n<\/div>\n<blockquote>\n<p>\u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u0627\u0646\u06af\u0634\u062a \u0634\u0645\u0627\u0631\u06cc \u0627\u0632 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">gt<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">gte<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ alias .min(5)<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">lt<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">lte<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ alias .max(5)<\/span>\n\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">int<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ value must be an integer<\/span>\n\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">positive<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/     &gt; 0<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">nonnegative<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/  &gt;= 0<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">negative<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/     &lt; 0<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">nonpositive<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/  &lt;= 0<\/span>\n\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">multipleOf<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Evenly divisible by 5. Alias .step(5)<\/span>\n\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">().<\/span><span class=\"nx\">finite<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ value must be finite, not Infinity or -Infinity<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1_%D9%BE%DB%8C%D8%B4_%D9%81%D8%B1%D8%B6\"><\/span>\n<p>  \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u06cc\u0627 \u062a\u0627\u0628\u0639 \u0628\u06af\u06cc\u0631\u062f.<br \/>\n\u0641\u0642\u0637 a \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f <strong>\u067e\u06cc\u0634 \u0641\u0631\u0636<\/strong> \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0633\u062a <strong>\u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647<\/strong>.<\/p>\n<p><code>z.string().default(\"Arafat\")<\/code><br \/>\n<code>z.string().default(Math.random)<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D8%AD%D8%AA_%D8%A7%D9%84%D9%84%D9%81%D8%B8%DB%8C\"><\/span>\n<p>  \u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">one<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">literal<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">one<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n<span class=\"c1\">\/\/ retrieve literal value<\/span>\n<span class=\"nx\">one<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ \"one\"<\/span>\n\n<span class=\"c1\">\/\/ Currently there is no support for Date literals in Zod.<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Enums\"><\/span>\n<p>  Enums<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B2%D9%88%D8%AF_%D8%A7%DB%8C%D9%86%D9%88%D9%85%D8%B3\"><\/span>\n<p>  \u0632\u0648\u062f \u0627\u06cc\u0646\u0648\u0645\u0633<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">FishEnum<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">enum<\/span><span class=\"p\">([<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Salmon<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Tuna<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Trout<\/span><span class=\"dl\">\"<\/span><span class=\"p\">]);<\/span>\n\n<span class=\"kd\">type<\/span> <span class=\"nx\">FishEnum<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">FishEnum<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ 'Salmon' | 'Tuna' | 'Trout'<\/span>\n\n<span class=\"c1\">\/\/ Doesn't work without `as const` since it has to be read only<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">VALUES<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Salmon<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Tuna<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Trout<\/span><span class=\"dl\">\"<\/span><span class=\"p\">]<\/span> <span class=\"k\">as<\/span> <span class=\"kd\">const<\/span><span class=\"p\">;<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">fishEnum<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">enum<\/span><span class=\"p\">(<\/span><span class=\"nx\">VALUES<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">fishEnum<\/span><span class=\"p\">.<\/span><span class=\"kr\">enum<\/span><span class=\"p\">.<\/span><span class=\"nx\">Salmon<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ =&gt; autocompletes<\/span>\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"TS_Enums_%D8%A7%DA%AF%D8%B1_%D9%85%D9%85%DA%A9%D9%86_%D8%A7%D8%B3%D8%AA_%D8%A7%D8%B2_Zod_enums_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  TS Enums: (\u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 Zod enums \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"highlight typescript\"><code><span class=\"kr\">enum<\/span> <span class=\"nx\">Fruits<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">Apple<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Banana<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">FruitEnum<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">nativeEnum<\/span><span class=\"p\">(<\/span><span class=\"nx\">Fruits<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1\"><\/span>\n<p>  \u0627\u0634\u06cc\u0627\u0621<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>z.object({})<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ all properties are required by default<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"na\">age<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">(),<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ extract the inferred type like this<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">Dog<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/ equivalent to:<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">age<\/span><span class=\"p\">:<\/span> <span class=\"kr\">number<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.shape.key<\/code>  &#8211; \u0637\u0631\u062d \u0648\u0627\u0631\u0647 \u0622\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">Dog<\/span><span class=\"p\">.<\/span><span class=\"nx\">shape<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ =&gt; string schema<\/span>\n<span class=\"nx\">Dog<\/span><span class=\"p\">.<\/span><span class=\"nx\">shape<\/span><span class=\"p\">.<\/span><span class=\"nx\">age<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ =&gt; number schema<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.extend<\/code>  &#8211; \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0647 \u0637\u0631\u062d \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">DogWithBreed<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Dog<\/span><span class=\"p\">.<\/span><span class=\"nx\">extend<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">breed<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.merge<\/code>  &#8211; \u062f\u0648 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0634\u06cc \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">BaseTeacher<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span> <span class=\"na\">students<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">array<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">())<\/span> <span class=\"p\">});<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">HasID<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">()<\/span> <span class=\"p\">});<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">Teacher<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">BaseTeacher<\/span><span class=\"p\">.<\/span><span class=\"nx\">merge<\/span><span class=\"p\">(<\/span><span class=\"nx\">HasID<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Teacher<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">Teacher<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ =&gt; { students: string[], id: string }<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.pick\/.omit\/.partial<\/code>  &#8211; \u0647\u0645\u0627\u0646 \u062a\u06cc \u0627\u0633\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">Recipe<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"na\">ingredients<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">array<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">()),<\/span>\n<span class=\"p\">});<\/span>\n\n\n<span class=\"c1\">\/\/ To only keep certain keys, use .pick<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">JustTheName<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Recipe<\/span><span class=\"p\">.<\/span><span class=\"nx\">pick<\/span><span class=\"p\">({<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">JustTheName<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">JustTheName<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ =&gt; { name: string }<\/span>\n\n\n<span class=\"c1\">\/\/ To remove certain keys, use .omit<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">NoIDRecipe<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Recipe<\/span><span class=\"p\">.<\/span><span class=\"nx\">omit<\/span><span class=\"p\">({<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">NoIDRecipe<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">NoIDRecipe<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ =&gt; { name: string, ingredients: string[] }<\/span>\n\n\n<span class=\"c1\">\/\/ To make every key optional, use .partial<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">partialRecipe<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Recipe<\/span><span class=\"p\">.<\/span><span class=\"nx\">partial<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ { id?: string | undefined; name?: string | undefined; ingredients?: string[] | undefined }<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.deepPartial<\/code>  &#8211; \u0645\u0627\u0646\u0646\u062f \u062c\u0632\u0626\u06cc \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u062a\u0648 \u062f\u0631 \u062a\u0648\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">user<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">username<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"na\">location<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">latitude<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">(),<\/span>\n    <span class=\"na\">longitude<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">(),<\/span>\n  <span class=\"p\">}),<\/span>\n  <span class=\"na\">strings<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">array<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">()<\/span> <span class=\"p\">})),<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">deepPartialUser<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">user<\/span><span class=\"p\">.<\/span><span class=\"nx\">deepPartial<\/span><span class=\"p\">();<\/span>\n\n<span class=\"cm\">\/*\n{\n  username?: string | undefined,\n  location?: {\n    latitude?: number | undefined;\n    longitude?: number | undefined;\n  } | undefined,\n  strings?: { value?: string}[]\n}\n*\/<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>passThrough<\/code>  &#8211; \u0627\u062c\u0627\u0632\u0647 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">person<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">person<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bob dylan<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">extraKey<\/span><span class=\"p\">:<\/span> <span class=\"mi\">61<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ =&gt; { name: \"bob dylan\" }<\/span>\n<span class=\"c1\">\/\/ extraKey has been stripped<\/span>\n\n\n<span class=\"c1\">\/\/ Instead, if you want to pass through unknown keys, use .passthrough()<\/span>\n<span class=\"nx\">person<\/span><span class=\"p\">.<\/span><span class=\"nx\">passthrough<\/span><span class=\"p\">().<\/span><span class=\"nx\">parse<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bob dylan<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">extraKey<\/span><span class=\"p\">:<\/span> <span class=\"mi\">61<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ =&gt; { name: \"bob dylan\", extraKey: 61 }<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.strict<\/code>  &#8211; \u0634\u06a9\u0633\u062a \u0628\u0631\u0627\u06cc \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">person<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span>\n  <span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"p\">})<\/span>\n  <span class=\"p\">.<\/span><span class=\"nx\">strict<\/span><span class=\"p\">();<\/span>\n\n<span class=\"nx\">person<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bob dylan<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">extraKey<\/span><span class=\"p\">:<\/span> <span class=\"mi\">61<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ =&gt; throws ZodError<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A2%D8%B1%D8%A7%DB%8C%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>const stringArray = z.array(z.string());<\/code>  &#8211; \u0622\u0631\u0627\u06cc\u0647 \u0631\u0634\u062a\u0647 \u0647\u0627<\/p>\n<p><code>.element<\/code>  &#8211; \u062f\u0631\u06cc\u0627\u0641\u062a \u0637\u0631\u062d \u0648\u0627\u0631\u0647 \u0639\u0646\u0635\u0631 \u0622\u0631\u0627\u06cc\u0647\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">stringArray<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ =&gt; string schema<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.nonempty<\/code>  &#8211; \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0622\u0631\u0627\u06cc\u0647 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">nonEmptyStrings<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">array<\/span><span class=\"p\">().<\/span><span class=\"nx\">nonempty<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ the inferred type is now<\/span>\n<span class=\"c1\">\/\/ [string, ...string[]]<\/span>\n\n<span class=\"nx\">nonEmptyStrings<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">([]);<\/span> <span class=\"c1\">\/\/ throws: \"Array cannot be empty\"<\/span>\n<span class=\"nx\">nonEmptyStrings<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">([<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Ariana Grande<\/span><span class=\"dl\">\"<\/span><span class=\"p\">]);<\/span> <span class=\"c1\">\/\/ passes<\/span>\n<\/code><\/pre>\n<\/div>\n<p><code>.min\/.max\/.length<\/code>  &#8211; \u062a\u0636\u0645\u06cc\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 certail\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">array<\/span><span class=\"p\">().<\/span><span class=\"nx\">min<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ must contain 5 or more items<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">array<\/span><span class=\"p\">().<\/span><span class=\"nx\">max<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ must contain 5 or fewer items<\/span>\n<span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">array<\/span><span class=\"p\">().<\/span><span class=\"nx\">length<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ must contain 5 items exactly<\/span>\n<\/code><\/pre>\n<\/div>\n<blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\"><\/span>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D9%86%D8%AF%D8%AA%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u0686\u0646\u062f\u062a\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0622\u0631\u0627\u06cc\u0647 \u0628\u0627 \u0637\u0648\u0644 \u062b\u0627\u0628\u062a \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0634\u0627\u062e\u0635 \u062f\u0631 \u0622\u0631\u0627\u06cc\u0647<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0627\u0632 \u0645\u062e\u062a\u0635\u0627\u062a \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<p><code>z.tuple([z.number(), z.number(), z.number().optional()])<\/code><\/p>\n<p><code>.rest<\/code>  &#8211; \u0627\u062c\u0627\u0632\u0647 \u062a\u0639\u062f\u0627\u062f \u0646\u0627\u0645\u062a\u0646\u0627\u0647\u06cc \u0627\u0632 \u0639\u0646\u0627\u0635\u0631 \u0627\u0636\u0627\u0641\u06cc \u0627\u0632 \u0646\u0648\u0639 \u062e\u0627\u0635<\/p>\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">variadicTuple<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">tuple<\/span><span class=\"p\">([<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">()]).<\/span><span class=\"nx\">rest<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">());<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">variadicTuple<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">([<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">hello<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">]);<\/span>\n<span class=\"c1\">\/\/ =&gt; [string, ...number[]];<\/span>\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF_%D8%A7%D8%AA%D8%B5%D8%A7%D9%84\"><\/span>\n<p>  \u0627\u062a\u062d\u0627\u062f. \u0627\u062a\u0635\u0627\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0631\u062f \u062a\u0627 \u0646\u0648\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f. <\/p>\n<pre class=\"highlight typescript\"><code><span class=\"kd\">let<\/span> <span class=\"nx\">stringOrNumber<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">union<\/span><span class=\"p\">([<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">()]);<\/span>\n<span class=\"c1\">\/\/ same as<\/span>\n<span class=\"kd\">let<\/span> <span class=\"nx\">stringOrNumber<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">or<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">());<\/span>\n\n<span class=\"nx\">stringOrNumber<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">foo<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ passes<\/span>\n<span class=\"nx\">stringOrNumber<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"mi\">14<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ passes<\/span>\n<\/code><\/pre>\n<blockquote>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF%DB%8C%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%A8%D8%B9%DB%8C%D8%B6_%D8%A2%D9%85%DB%8C%D8%B2\"><\/span>\n<p>  \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0628\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u0648\u0636\u0639\u06cc\u062a \u0647\u0627 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0647 Zod \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062f\u0631 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f<\/p>\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">myUnion<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">discriminatedUnion<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">status<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">[<\/span>\n  <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span> <span class=\"na\">status<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">literal<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">success<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">()<\/span> <span class=\"p\">}),<\/span>\n  <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span> <span class=\"na\">status<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">literal<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">failed<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"na\">error<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"k\">instanceof<\/span><span class=\"p\">(<\/span><span class=\"nb\">Error<\/span><span class=\"p\">)<\/span> <span class=\"p\">}),<\/span>\n<span class=\"p\">]);<\/span>\n\n<span class=\"nx\">myUnion<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">({<\/span> <span class=\"na\">status<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">success<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">yippie ki yay<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<\/blockquote>\n<\/blockquote>\n<p>\n<\/p><\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D9%88%D8%A7%D8%A8%D9%82\"><\/span>\n<p>  \u0633\u0648\u0627\u0628\u0642<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0632\u0645\u0627\u0646\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0631\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u06cc\u062f \u0648 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc \u062f\u0647\u06cc\u062f<\/p>\n<p><code>z.record(z.number())<\/code>  &#8211; \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0639\u062f\u0627\u062f \u0647\u0633\u062a\u0646\u062f<\/p>\n<p><code>z.record(z.string(), z.object({ name: z.string() }))<\/code>  &#8211; \u0627\u0639\u062a\u0628\u0627\u0631 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0628\u0627 \u0627\u0644\u06af\u0648 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0627\u0644\u06af\u0648 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0631\u0627\u06cc \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0647\u0627\u060c \u0646\u0642\u0634\u0647 \u0647\u0627 \u0648 \u06a9\u0634 \u0647\u0627 \u062e\u0648\u0628 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%82%D8%B4%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0646\u0642\u0634\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u062c\u0627\u06cc \u0646\u0633\u062e\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0631\u06a9\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">stringNumberMap<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">(),<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">());<\/span>\n\n<span class=\"kd\">type<\/span> <span class=\"nx\">StringNumberMap<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">stringNumberMap<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ type StringNumberMap = Map&lt;string, number&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631\u0633\u062a \u0645\u0627\u0646\u0646\u062f \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f (\u0641\u0642\u0637 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u062f\u0631 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f)\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">numberSet<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">());<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">NumberSet<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">infer<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">numberSet<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/ type NumberSet = Set&lt;number&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%D8%B9%D8%AF%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0648\u0639\u062f\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ol>\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0634\u06cc\u0621 \u0648\u0639\u062f\u0647 \u0627\u0633\u062a<\/li>\n<li>\u0642\u0644\u0627\u0628 \u0645\u06cc \u06a9\u0646\u062f <code>.then<\/code> \u0634\u0646\u0648\u0646\u062f\u0647 \u0648\u0639\u062f\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0646\u0648\u0639 \u0628\u0627\u0632\u06af\u0634\u062a.\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">numberPromise<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nx\">promise<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">number<\/span><span class=\"p\">());<\/span>\n\n<span class=\"nx\">numberPromise<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">tuna<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"c1\">\/\/ ZodError: Non-Promise type: string<\/span>\n\n<span class=\"nx\">numberPromise<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"nb\">Promise<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">tuna<\/span><span class=\"dl\">\"<\/span><span class=\"p\">));<\/span>\n<span class=\"c1\">\/\/ =&gt; Promise&lt;number&gt;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">test<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">await<\/span> <span class=\"nx\">numberPromise<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"nb\">Promise<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">tuna<\/span><span class=\"dl\">\"<\/span><span class=\"p\">));<\/span>\n  <span class=\"c1\">\/\/ ZodError: Non-number type: string<\/span>\n\n  <span class=\"k\">await<\/span> <span class=\"nx\">numberPromise<\/span><span class=\"p\">.<\/span><span class=\"nx\">parse<\/span><span class=\"p\">(<\/span><span class=\"nb\">Promise<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"mf\">3.14<\/span><span class=\"p\">));<\/span>\n  <span class=\"c1\">\/\/ =&gt; 3.14<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>.refine<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">email<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"kr\">string<\/span><span class=\"p\">().<\/span><span class=\"nx\">refine<\/span><span class=\"p\">((<\/span><span class=\"nx\">val<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">val<\/span><span class=\"p\">.<\/span><span class=\"nx\">endsWith<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">@gmail.com<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n<span class=\"p\">{<\/span><span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Email must end with @gmail.com<\/span><span class=\"dl\">\"<\/span><span class=\"p\">}<\/span>\n<span class=\"p\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <code>superRefine<\/code> \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u062f\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0627\u0645\u0627 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7\"><\/span>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u0637\u0627\u0647\u0627 \u062f\u0631 Zod \u0628\u0633\u06cc\u0627\u0631 \u062f\u0642\u06cc\u0642 \u0647\u0633\u062a\u0646\u062f \u0648 \u0648\u0627\u0642\u0639\u0627\u064b \u062a\u0648\u0633\u0637 \u0627\u0646\u0633\u0627\u0646 \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0646\u06cc\u0633\u062a\u0646\u062f.  \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u0646\u062f <code>zod-validation-error<\/code> \u06a9\u0647 \u06cc\u06a9 \u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>fromZodError<\/code> \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0637\u0627 \u062a\u0648\u0633\u0637 \u0627\u0646\u0633\u0627\u0646\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">fromZodError<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">zod-validation-error<\/span><span class=\"dl\">\"<\/span>\n\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">fromZodError<\/span><span class=\"p\">(<\/span><span class=\"nx\">results<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">))<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0641\u0627\u0647\u06cc\u0645 \u0628\u0633\u06cc\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 Zod \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0648 \u0645\u0646 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u0645.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0627\u0633\u0646\u0627\u062f \u0631\u0633\u0645\u06cc Zod \u0628\u0631\u0648\u06cc\u062f.  \u0622\u0646\u0647\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062f\u0631 \u0622\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0627\u0646\u062f. <\/p>\n<p>\u062e\u0628 \u0628\u0686\u0647 \u0647\u0627 \u0627\u06cc\u0646 \u0628\u0648\u062f  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0634\u0645\u0627 \u0628\u0686\u0647 \u0647\u0627 \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647 \u062a\u0635\u0627\u062f\u0641 \u0631\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.  \u0645\u0646 \u062a\u0645\u0627\u0645 \u062a\u0644\u0627\u0634\u0645 \u0631\u0627 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc \u0632\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0645 \u0648 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u0645.  \u0627\u06af\u0631 \u0627\u0628\u0647\u0627\u0645 \u06cc\u0627 \u0633\u0648\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u062f\u0631 \u0642\u0633\u0645\u062a \u0646\u0638\u0631\u0627\u062a \u0628\u067e\u0631\u0633\u06cc\u062f.  \u0628\u0647 \u0645\u062d\u0636 \u062f\u06cc\u062f\u0646 \u062c\u0648\u0627\u0628 \u0645\u06cc\u062f\u0645.  \u0647\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0628\u0639\u062f\u06cc \u0645\u0646 \u0645\u06cc \u0628\u06cc\u0646\u0645\ud83d\ude0a.<\/p>\n<p><strong>\u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f<\/strong>:<br \/>\n\ud83d\udc68\u200d\ud83d\udcbb\u06a9\u0627\u0631\u0646\u0627\u0645\u0647 \u0645\u0646<br \/>\n\ud83c\udfde\ufe0fFiverr \u0645\u0646<br \/>\n\ud83c\udf09\u06af\u06cc\u062a\u0647\u0627\u0628 \u0645\u0646<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628 \u0627\u0647\u062f\u0627\u0641 \u0632\u0648\u062f \u0628\u0631\u067e\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u0627\u06cc\u0647 \u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u06cc\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc Enums \u0632\u0648\u062f \u0627\u06cc\u0646\u0648\u0645\u0633 TS Enums: (\u0627\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 Zod enums \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f) \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627 \u0627\u0646\u0648\u0627\u0639 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0686\u0646\u062f\u062a\u0627\u06cc\u06cc \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632 \u0633\u0648\u0627\u0628\u0642 \u0646\u0642\u0634\u0647 \u0647\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627 \u0648\u0639\u062f\u0647 \u0647\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0647\u062f\u0627\u0641 \u0632\u0648\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":20300,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-20299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=20299"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20299\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/20300"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=20299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=20299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=20299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}