19 puan yazan xguru 2025-02-06 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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 ~standard adlı nesne özelliği üzerinden uygulanır
  • ~standard içinde version, vendor, validate, types gibi zorunlu özellikler bulunur
  • validate fonksiyonu başarılı olduğunda value, başarısız olduğunda ise issues dizisini döndürür
  • types ö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 ~standard ad alanına koyarak mevcut API ile çakışmayı engeller
  • Geliştirici deneyimini koruma: ~standard gibi 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?

  • StandardSchemaV1 arayüzünü kütüphanenize kopyalayıp ~standard özelliğini ekleyin
  • validate fonksiyonunu 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/spec paketini 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, validate dönüş değerinin Promise olup olmadığını kontrol edip buna göre istisna fırlatabilirsiniz

SSS

  • @standard-schema/spec bağımlılığını eklemek gerekir mi?: Bunu bağımlılık olarak eklemek zorunlu değildir; kopyalayıp kullanabilirsiniz
  • dev dependency olarak 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.

Henüz yorum yok.