March 10, 2025

Walidacja danych w TypeScript – przegląd metod i narzędzi

Walidacja danych to kluczowy aspekt każdej aplikacji, który zapewnia spójność, bezpieczeństwo i poprawność przetwarzanych informacji. W TypeScript mamy wiele sposobów na walidację danych, zarówno na poziomie typów, jak i za pomocą dedykowanych bibliotek. W tym artykule omówimy różne metody oraz przedstawimy popularne narzędzia wspierające ten proces.

Walidacja danych w TypeScript – przegląd metod i narzędzi
avatar

rzvbka

@rvabka

Post category Typescript

1. Walidacja na poziomie typów

TypeScript pozwala na weryfikację struktur danych już na etapie kompilacji dzięki systemowi typów. Możemy zdefiniować interfejsy i typy, które pomagają w sprawdzeniu poprawności danych przed ich użyciem.

interface User {
  name: string;
  age: number;
}

const validateUser = (user: User) => {
  return typeof user.name === 'string' && typeof user.age === 'number';
};

Jednak walidacja na poziomie typów działa tylko w czasie kompilacji i nie zapobiega błędom podczas wykonywania kodu, zwłaszcza gdy dane pochodzą z zewnętrznych źródeł.

2. Walidacja za pomocą operatora in i typeof

W TypeScript można używać operatora in oraz typeof, aby dynamicznie sprawdzać właściwości obiektów:

const isValidUser = (user: any): user is User => {
  return 'name' in user && 'age' in user && typeof user.name === 'string' && typeof user.age === 'number';
};

Ta metoda pozwala na walidację danych w czasie wykonania, ale może być uciążliwa do zarządzania przy bardziej złożonych strukturach danych.

3. Walidacja z wykorzystaniem zod

Biblioteka zod to jedno z najlepszych narzędzi do walidacji w TypeScript. Pozwala na definiowanie schematów oraz ich używanie do sprawdzania poprawności danych:

import { z } from 'zod';

const UserSchema = z.object({
  name: z.string(),
  age: z.number().min(18),
});

const validateUser = (user: unknown) => {
  const result = UserSchema.safeParse(user);
  return result.success ? result.data : result.error;
};

zod pozwala na łatwe definiowanie walidacji, obsługę błędów i zapewnienie spójności danych w całej aplikacji.

4. Walidacja za pomocą yup

Inną popularną biblioteką jest yup, która działa w podobny sposób:

import * as yup from 'yup';

const userSchema = yup.object({
  name: yup.string().required(),
  age: yup.number().min(18).required(),
});

const validateUser = async (user: any) => {
  try {
    await userSchema.validate(user);
    return true;
  } catch (error) {
    return error;
  }
};

yup jest często wykorzystywany w aplikacjach Reactowych do walidacji formularzy.

5. Podsumowanie

Walidacja danych w TypeScript może być realizowana na różne sposoby – od podstawowych metod wbudowanych po zaawansowane biblioteki takie jak zod czy yup. Wybór odpowiedniego rozwiązania zależy od skali projektu i potrzeb walidacyjnych.

Warto pamiętać, że w większości aplikacji najlepszym podejściem jest łączenie różnych metod, np. walidacji statycznej przez TypeScript z dynamiczną walidacją danych wejściowych przy pomocy dedykowanych bibliotek.


Masz swoje ulubione narzędzie do walidacji w TypeScript? Podziel się w komentarzu!