Standard Schema - TypeScript doğrulaması için ortak arayüz
(standardschema.dev)- JavaScript/TypeScript tabanlı şema kütüphanelerinin ortak bir arayüz uygulaması için tasarlanmış bir spesifikasyon
- Amaç, her kütüphanede kullanıcının tanımladığı tür doğrulama mantığının yeniden kullanılabilmesini sağlayarak, araçların ayrı adaptörler olmadan birbiriyle uyumlu çalışmasını mümkün kılmak
- Zod, Valibot, ArkType gibi başlıca kütüphanelerin geliştiricileri tarafından ortaklaşa tasarlandı
Başlıca arayüz (StandardSchemaV1)
- Tüm spesifikasyon
~standardadlı nesne özelliği üzerinden uygulanır ~standardiçindeversion,vendor,validate,typesgibi zorunlu özellikler bulunurvalidatefonksiyonu başarılı olduğundavalue, başarısız olduğunda iseissuesdizisini döndürürtypesözelliği sayesinde TypeScript'te şemanın girdi (input) ve çıktı (output) türleri çıkarılabilir- Tüm güncellemeler, major sürüm değişikliği olmadığı sürece geriye dönük uyumluluğu korur
Tasarım hedefleri
- Çalışma zamanı doğrulama desteği: Hata bilgilerini standart bir biçimde iletir
- Statik tür çıkarımı desteği: TypeScript tabanlı kütüphanelerin çıkardığı tür bilgisini açıkça görünür kılar
- Sadelik: Mevcut kütüphane fonksiyonlarına yalnızca birkaç satır eklenerek uygulanabilir
- API çakışmalarını önleme: Her şeyi yalnızca
~standardad alanına koyarak mevcut API ile çakışmayı engeller - Geliştirici deneyimini koruma:
~standardgibi tilde (~) ile başlayarak otomatik tamamlamada önceliği düşürür
Hangi kütüphaneler bunu uyguluyor?
- Zod, Valibot, ArkType, Arri Schema, TypeMap gibi kütüphaneler şimdiden Standard Schema desteği sunuyor
- tRPC, TanStack Form, TanStack Router, Hono Middleware gibi araçlar da Standard Schema tabanlı kullanıcı şemalarını kabul ediyor
Spesifikasyon kendi kütüphanenize nasıl uygulanır?
StandardSchemaV1arayüzünü kütüphanenize kopyalayıp~standardözelliğini ekleyinvalidatefonksiyonunu mevcut doğrulama fonksiyonuna bağlayarak, başarı durumunda{ value }, hata durumunda{ issues }döndürecek şekilde düzenleyin- Gerekirse asenkron doğrulama da mümkündür, ancak senkron doğrulama önerilir
Standard Schema ile kullanıcı tanımlı şema nasıl alınır?
- Şema kütüphanesi olmadan doğrudan kullanmak için
@standard-schema/specpaketini kurabilir veya arayüzü kopyalayabilirsiniz standardValidateörneğindeki gibi, standart arayüze sahip bir şema ise hangi kütüphaneden gelirse gelsin aynı şekilde doğrulama yapılabilir- Yalnızca senkron doğrulamaya izin vermek istiyorsanız,
validatedönüş değerininPromiseolup olmadığını kontrol edip buna göre istisna fırlatabilirsiniz
SSS
@standard-schema/specbağımlılığını eklemek gerekir mi?: Bunu bağımlılık olarak eklemek zorunlu değildir; kopyalayıp kullanabilirsinizdev dependencyolarak eklenemez: Kütüphanenin public API'sinin bir parçası olduğu için gerçek dağıtım ortamında da kullanılabilir olmalıdır~standardönünde neden tilde (~) kullanılıyor?: Otomatik tamamlamada diğer özelliklerin ardından görünmesi amaçlanmıştır- Neden Symbol yerine string anahtar kullanılıyor?: Çünkü TypeScript'te Symbol anahtarları otomatik tamamlama sıralaması ve tür çıkarımı açısından sorun yaratabilir
Henüz yorum yok.