Skeemojen koostaminen ja tarkentaminen
Rakentakaa monimutkaisia skeemoja refine-, transform- ja union-ominaisuuksilla.
Skeemojen koostaminen ja tarkentaminen on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu TypeScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.
Skeemoja voi yhdistellä
Zod-skeemat ovat yhdisteltäviä rakennuspalikoita. Voit tarkentaa, muuntaa, laajentaa ja yhdistää niitä monimutkaisten validointisääntöjen mallintamiseksi.
import { z } from "zod";
const base = z.object({ name: z.string() });
// We will add rules and combine schemas from here.Mukautetut säännöt refine-metodilla
.refine lisää mukautetun validointipredikaatin ja virheviestin tilanteisiin, joihin Zodilla ei ole sisäänrakennettua sääntöä.
import { z } from "zod";
const password = z.string().refine(
(s) => s.length >= 8,
{ message: "Must be at least 8 characters" }
);
// password.parse("short") throws with that message.Kenttien välisten suhteiden tarkentaminen
Voit käyttää .refine-metodia olioon kenttien välisten suhteiden validoimiseksi, esimerkiksi salasanan ja sen vahvistuksen täsmäämisen tarkistamiseen.
import { z } from "zod";
const form = z.object({
password: z.string(),
confirm: z.string()
}).refine((d) => d.password === d.confirm, {
message: "Passwords must match"
});
// Validates both fields together.Arvojen muuntaminen
.transform muuntaa validoidun arvon toisenlaiseksi rakenteeksi validoinnin onnistuttua.
import { z } from "zod";
const trimmed = z.string().transform((s) => s.trim());
const result = trimmed.parse(" hi "); // "hi"Valinnaiset kentät
.optional() sallii kentän puuttumisen, mikä näkyy sekä validoinnissa että päätellyssä tyypissä.
import { z } from "zod";
const schema = z.object({
name: z.string(),
bio: z.string().optional()
});
// bio may be omitted.Oletusarvot
.default antaa arvon, kun syöte puuttuu, joten jäsennetyn tuloksen kentällä on aina arvo.
import { z } from "zod";
const schema = z.object({
retries: z.number().default(3)
});
const r = schema.parse({}); // { retries: 3 }Unioniskeemat
z.union hyväksyy arvon, joka vastaa mitä tahansa useista skeemoista. Se vastaa Zodissa TypeScriptin unionityyppiä.
import { z } from "zod";
const id = z.union([z.string(), z.number()]);
// id.parse("abc") and id.parse(123) both succeed.Erotellut unionit Zodissa
z.discriminatedUnion validoi tunnisteelliset unionit tehokkaasti vaihtamalla käsittelyhaaraa erottelukentän perusteella.
import { z } from "zod";
const shape = z.discriminatedUnion("kind", [
z.object({ kind: z.literal("circle"), radius: z.number() }),
z.object({ kind: z.literal("square"), side: z.number() })
]);
// Picks the right member by kind.Yhdistäminen extend-metodilla
.extend lisää kenttiä olemassa olevaan olioskeemaan, joten voit rakentaa suurempia skeemoja pienemmistä.
import { z } from "zod";
const base = z.object({ id: z.number() });
const user = base.extend({ name: z.string() });
// user validates { id: number; name: string }Olioskeemojen yhdistäminen
Voit myös yhdistää kaksi olioskeemaa .merge-metodilla, jolloin kaikki niiden kentät kootaan yhdeksi skeemaksi.
import { z } from "zod";
const a = z.object({ x: z.number() });
const b = z.object({ y: z.string() });
const combined = a.merge(b);
// combined validates { x: number; y: string }Kaiken ketjuttaminen yhteen
Tarkennukset, muunnokset, oletusarvot ja laajennukset voi ketjuttaa sujuvasti, jolloin monipuoliset validointisäännöt voi ilmaista yhdessä helppolukuisessa skeemassa.
import { z } from "zod";
const signup = z.object({
email: z.string().refine(s => s.includes("@"), { message: "Invalid email" }),
age: z.number().default(18)
}).extend({
newsletter: z.boolean().optional()
});
// One schema, many rules.Pikatarkistus: skeemojen yhdistäminen
Testaa, miten hyvin ymmärrät skeemojen yhdistämisen ja tarkentamisen.
Kertaus: skeemojen yhdistäminen ja tarkentaminen
Opit lisäämään mukautettuja sääntöjä .refine-metodilla, muotoilemaan arvoja uudelleen .transform-metodilla, käsittelemään puuttuvaa dataa .optional- ja .default-metodeilla, yhdistämään vaihtoehtoja z.union-rakennusfunktiolla sekä laajentamaan skeemoja .extend- ja .merge-metodeilla.
import { z } from "zod";
const schema = z.object({ name: z.string() })
.extend({ age: z.number().default(0) })
.refine(d => d.name.length > 0, { message: "Name required" });
// Composed validation in one place.Opi TypeScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 101
- Oppitunnit
- 352
Usein kysytyt kysymykset
Onko oppitunti ”Skeemojen koostaminen ja tarkentaminen” ilmainen?
Kyllä – oppitunnin ”Skeemojen koostaminen ja tarkentaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko TypeScript Academy-kurssin, päivitä CoddyKit PROhon. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Skeemojen koostaminen ja tarkentaminen”?
Rakentakaa monimutkaisia skeemoja refine-, transform- ja union-ominaisuuksilla. Harjoittelet TypeScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni TypeScript Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin TypeScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Skeemojen koostaminen ja tarkentaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä TypeScript Academy-oppitunnilla?
Kyllä. Jokainen TypeScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Zod-skeemojen perusteet
- Tyyppien päättely skeemoista
- parse ja safeParse
- Skeemojen koostaminen ja tarkentaminen