İç içe bir yapılandırma nesnesinden TypeScript tip çıkarımlı bir Zod doğrulama şeması oluşturun. Config JSON yapıştırın ve çalışma zamanı config doğrulaması...
// Generated by DevBento — json-to-typescript
interface RootApp {
name: string;
version: string;
debug: boolean;
}
interface RootDatabaseCredentials {
user: string;
password: string;
}
interface RootDatabase {
host: string;
port: number;
credentials: RootDatabaseCredentials;
}
interface RootFeatures {
darkMode: boolean;
maxConnections: number;
allowedOrigins: string[];
}
interface Root {
app: RootApp;
database: RootDatabase;
features: RootFeatures;
}Bu örnek, iç içe bir uygulama yapılandırmasını TypeScript tip çıkarımlı bir Zod doğrulama şemasına dönüştürür. Önceden doldurulmuş JSON, app ayarları, kimlik bilgileri içeren bir database bölümü ve feature flag’leri içerir. Zod modu önceden seçilidir, bu yüzden şema sayfa yüklenir yüklenmez görünür.
Araç şunları üretir:
z.object() ile RootSchemaRootDatabaseSchema ve RootDatabaseCredentialsSchemaRootFeaturesSchemaz.string(), z.number(), z.boolean(), z.array(z.string())z.infer<typeof SchemaName> ile dışa aktarılan TypeScript tiplerizod için import ifadesi dahilnpm install zod)Fail-fast config kalıbı: config nesnesini ortam değişkenlerinden veya bir dosyadan oluşturun, entrypoint’inizin başında şemayla ayrıştırın ve bir şey yanlışsa okunabilir bir hatayla hemen çökün. Diğer tüm modüller çıkarılan tipi içe aktarır, böylece config biçimi bir kez tanımlanır ve hem çalışma zamanında hem derleme zamanında zorunlu kılınır.
Ortam değişkenleri, sayılar ve boolean’lar için bile her zaman string olarak gelir. Config’iniz process.env’den geliyorsa, portlar ve limitler için z.coerce.number() ve flag’ler için bir boolean ön işleme adımı ekleyin. Oluşturulan şema, bu iyileştirmeleri asacağınız yapıyı sağlar.
Üretimde doğrulama başarısız olduğunda, değerleri değil Zod issue yollarını loglayın. Config genellikle veritabanı kimlik bilgileri gibi sırlar içerir ve issue yolları (database.credentials.user), sırrı loglara sızdırmadan sorunu gösterir.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.