TypeScript Academy · Oppitunti

Skeemojen koostaminen ja tarkentaminen

Rakentakaa monimutkaisia skeemoja refine-, transform- ja union-ominaisuuksilla.

Oppitunti 4/413 vaihetta

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.
Aloita maksutta

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

  1. Zod-skeemojen perusteet
  2. Tyyppien päättely skeemoista
  3. parse ja safeParse
  4. Skeemojen koostaminen ja tarkentaminen
← Takaisin: TypeScript Academy