zod/valibot şemaları ve çıkarım
Güvenilmeyen verileri şemalarla doğrulayın; TS türlerini doğrudan doğrulayıcılardan çıkarın; zod ile valibot'u karşılaştırın ve bunları işleyicilere bağlayın.
zod/valibot şemaları ve çıkarım, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 2 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 2 dersten oluşur.
Giriş
Amaç: Dış girdiyi bilinmeyen olarak ele almak, bir şemayla doğrulamak ve bu şemadan TS türlerini çıkarsamak. zod kullanacak, valibot söz dizimini görecek ve işleyiciler için küçük bir yardımcı oluşturacaksınız.
- Tek doğruluk kaynağı
- safeParse ve parse karşılaştırması
- Çıkarılan türleri yeniden kullanma
zod tür çıkarımı
Bir şemayı bir kez tanımlayın. type User = z.infer<typeof userSchema>, doğrulama kurallarını tam olarak yansıtır.
import { z } from "zod"
export const userSchema = z.object({
id: z.string().uuid(),
name: z.string().min(1),
age: z.number().int().min(0).optional()
})
export type User = z.infer<typeof userSchema>
// User is kept in sync with runtime rules.safeParse ve parse karşılaştırması
safeParse, hata fırlatmadan başarılı/başarısız bir sonuç verir; bu nedenle HTTP işleyicileri için idealdir. parse ise geçersiz girdide hata fırlatır.
import type { Request, Response } from "express"
import { userSchema, type User } from "./schema"
export function createUser(req: Request, res: Response<User | { error: string; issues?: unknown }>) {
const r = userSchema.safeParse(req.body)
if (!r.success) {
return res.status(400).json({ error: "Invalid body", issues: r.error.format() })
}
const user = r.data
return res.status(201).json(user)
}
// parse() throws; safeParse() returns a discriminated unionvalibot tür çıkarımı
valibot, Infer<typeof schema> kullanan özlü bir doğrulayıcı sunar. Bir kitaplık seçin ve ekip genelinde standartlaştırın.
import { object, string, number, optional, minLength, uuid, minValue } from "valibot"
import type { Infer } from "valibot"
export const VUser = object({
id: string([uuid()]),
name: string([minLength(1)]),
age: optional(number([minValue(0)]))
})
export type VUserT = Infer<typeof VUser>
// Similar idea: one schema, inferred type.Doğrulama yardımcısı
Ayrıştırmayı küçük bir yardımcıyla sarmalayarak işleyicilerin basit bir { ok,data } veya { ok:false,issues } yapısı almasını sağlayın.
import { ZodTypeAny } from "zod"
export function validate<T extends ZodTypeAny, Out = unknown>(schema: T, value: unknown, onError?: (issues: unknown) => never | void): { ok: true; data: Out } | { ok: false; issues: unknown } {
const r = schema.safeParse(value)
if (!r.success) {
const issues = r.error.format()
if (onError) onError(issues as unknown as never)
return { ok: false, issues }
}
return { ok: true, data: r.data as unknown as Out }
}İpuçları
İpuçları:
- Şemaları sınıra yakın tutun (HTTP, CLI, DB IO).
- Türleri çıkarın ve dışa aktarın; elle yazılmış kopyalardan kaçının.
- Sorun ayrıntılarıyla birlikte 400 döndürün; istemci girdisine asla güvenmeyin.
Tür çıkarımının yararı denetimi
Hızlı denetim: Türler neden şemalardan çıkarılır?
Özet
Özet: Bilinmeyen girdileri zod/valibot ile doğrulayın, safeParse kullanın ve derleme zamanı ile çalışma zamanını uyumlu tutmak için türleri çıkarın.
Sıkça Sorulan Sorular
“zod/valibot şemaları ve çıkarım” dersi ücretsiz mi?
Evet — “zod/valibot şemaları ve çıkarım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 2 dersten oluşur.
“zod/valibot şemaları ve çıkarım” dersinde ne öğreneceğim?
Güvenilmeyen verileri şemalarla doğrulayın; TS türlerini doğrudan doğrulayıcılardan çıkarın; zod ile valibot'u karşılaştırın ve bunları işleyicilere bağlayın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 2 dersinin 1. dersidir.
“zod/valibot şemaları ve çıkarım” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- zod/valibot şemaları ve çıkarım
- Savunmacı ayrıştırma ve hata zarfları