TypeScript Desteği
- zod:
zod
, TypeScript ile mükemmel uyumlu bir doğrulama kütüphanesidir. Tür çıkarımı (type inference) konusunda oldukça güçlüdür ve TypeScript projeleri için ideal bir seçimdir. - joi:
joi
, TypeScript desteği sunar, ancak tür çıkarımı (type inference) konusundaio-ts
kadar güçlü değildir. Yine de, doğrulama şemaları oluştururken TypeScript ile uyumlu çalışır. - yup:
yup
, TypeScript ile uyumlu bir şekilde çalışır ve tür çıkarımı konusunda iyi bir destek sunar. Özellikle nesne ve dizi doğrulama için zincirleme (chainable) bir API sunar. - superstruct:
superstruct
, TypeScript ile uyumlu bir şekilde çalışır, ancak tür çıkarımı konusunda sınırlı özellikler sunar. Yine de, basit ve anlaşılır bir API ile TypeScript projelerinde kullanılabilir. - io-ts:
io-ts
, TypeScript ile sıkı bir entegrasyon sunar ve runtime (çalışma zamanı) veri doğrulama ile tür güvenliğini birleştirir. Bu, geliştiricilerin hem tür tanımları hem de doğrulama kuralları için aynı yapıyı kullanmalarına olanak tanır. - runtypes:
runtypes
, TypeScript tür tanımları ile uyumlu bir şekilde çalışır ve tür güvenliğini artırırken, doğrulama işlemlerini de kolaylaştırır. Bu, geliştiricilerin türleri ve doğrulama kurallarını aynı anda yönetmelerine yardımcı olur.
Doğrulama Şeması Oluşturma
- zod:
zod
, basit ve hızlı bir şekilde doğrulama şemaları oluşturmayı sağlar. TypeScript ile tam uyumlu çalışır ve minimal bir API sunar. - joi:
joi
, nesne tabanlı doğrulama için kapsamlı ve hiyerarşik şemalar oluşturmayı kolaylaştırır. Özellikle, karmaşık nesne yapıları için güçlüdür. - yup:
yup
, özellikle nesne ve dizi doğrulama için zincirleme (chainable) bir API sunar. Hata mesajlarını özelleştirme konusunda da güçlüdür. - superstruct:
superstruct
, hafif ve esnek bir yapı ile hızlı bir şekilde doğrulama şemaları oluşturmayı sağlar. Basit ve anlaşılır bir API sunar. - io-ts:
io-ts
, doğrulama şemalarını TypeScript tür tanımları ile birlikte oluşturur. Bu, tür güvenliğini artırırken, aynı zamanda runtime (çalışma zamanı) doğrulama sağlar. - runtypes:
runtypes
, basit ve okunabilir doğrulama şemaları oluşturur. TypeScript tür tanımları ile uyumlu çalışarak, tür güvenliğini artırır.
Hata Mesajları Özelleştirme
- zod:
zod
, hata mesajlarını özelleştirmek için basit bir yöntem sunar. Ancak, özelleştirme konusunda sınırlı özellikler sunar. - joi:
joi
, hata mesajlarını özelleştirme konusunda oldukça güçlüdür. Her bir doğrulama kuralı için özel hata mesajları tanımlamak mümkündür. - yup:
yup
, hata mesajlarını özelleştirme konusunda iyi bir destek sunar. Özellikle, her bir doğrulama kuralı için özel mesajlar tanımlamak mümkündür. - superstruct:
superstruct
, hata mesajlarını özelleştirmek için basit bir yaklaşım sunar. Ancak, özelleştirme yetenekleri sınırlıdır. - io-ts:
io-ts
, hata mesajlarını özelleştirmek için sınırlı destek sunar. Ancak, doğrulama hataları hakkında ayrıntılı bilgi sağlar. - runtypes:
runtypes
, hata mesajlarını özelleştirmek için basit bir yöntem sunar. Ancak, özelleştirme konusundajoi
kadar kapsamlı değildir.
Asenkron Doğrulama Desteği
- zod:
zod
, asenkron doğrulama desteği sunar ve Promise tabanlı doğrulama işlemlerini destekler. Bu, özellikle veritabanı doğrulama gibi asenkron işlemler için faydalıdır. - joi:
joi
, asenkron doğrulama desteği sunar ve Promise tabanlı doğrulama işlemlerini destekler. Bu, özellikle veritabanı doğrulama gibi asenkron işlemler için faydalıdır. - yup:
yup
, asenkron doğrulama desteği sunar ve Promise tabanlı doğrulama işlemlerini destekler. Bu, özellikle veritabanı doğrulama gibi asenkron işlemler için faydalıdır. - superstruct:
superstruct
, asenkron doğrulama desteği sunmaz. Ancak, doğrulama işlemleri sırasında Promise (vaat) nesneleri ile çalışmak mümkündür. - io-ts:
io-ts
, asenkron doğrulama desteği sunmaz. Ancak, doğrulama işlemleri sırasında Promise (vaat) nesneleri ile çalışmak mümkündür. - runtypes:
runtypes
, asenkron doğrulama desteği sunmaz. Ancak, doğrulama işlemleri sırasında Promise (vaat) nesneleri ile çalışmak mümkündür.
Örnek Kod
- zod:
zod
ile Basit Doğrulama Örneğiimport { z } from 'zod'; const UserSchema = z.object({ name: z.string(), age: z.number().min(0), }); const result = UserSchema.safeParse({ name: 'Alice', age: 30 }); if (result.success) { console.log('Doğrulama Başarılı:', result.data); } else { console.error('Doğrulama Hatası:', result.error); }
- joi:
joi
ile Basit Doğrulama Örneğiconst Joi = require('joi'); const schema = Joi.object({ name: Joi.string().required(), age: Joi.number().integer().min(0).required(), }); const { error, value } = schema.validate({ name: 'Alice', age: 30 }); if (error) { console.error('Doğrulama Hatası:', error.details); } else { console.log('Doğrulama Başarılı:', value); }
- yup:
yup
ile Basit Doğrulama Örneğiimport * as yup from 'yup'; const schema = yup.object().shape({ name: yup.string().required(), age: yup.number().integer().min(0).required(), }); schema.validate({ name: 'Alice', age: 30 }) .then((value) => { console.log('Doğrulama Başarılı:', value); }) .catch((err) => { console.error('Doğrulama Hatası:', err); });
- superstruct:
superstruct
ile Basit Doğrulama Örneğiimport { struct } from 'superstruct'; const User = struct({ name: 'string', age: 'number', }); const user = { name: 'Alice', age: 30 }; if (User(user)) { console.log('Doğrulama Başarılı:', user); } else { console.error('Doğrulama Hatası'); }
- io-ts:
io-ts
ile Basit Doğrulama Örneğiimport * as t from 'io-ts'; const User = t.type({ name: t.string, age: t.number, }); const result = User.decode({ name: 'Alice', age: 30 }); if (result._tag === 'Right') { console.log('Doğrulama Başarılı:', result.right); } else { console.error('Doğrulama Hatası:', result.left); }
- runtypes:
runtypes
ile Basit Doğrulama Örneğiimport { Runtype, String, Number, Record } from 'runtypes'; const User = Record({ name: String, age: Number, }); const result = User.check({ name: 'Alice', age: 30 }); console.log('Doğrulama Başarılı:', result);