본문 바로가기
개발일기

Zod + TypeScript: 런타임 타입 검증

by 김엉배 2026. 3. 26.
728x90
반응형

1. Zod와 TypeScript 소개

Zod는 런타임에 데이터의 타입을 검증하는 인기 있는 JavaScript 라이브러리입니다. TypeScript의 정적 타입 검증은 코드의 안정성을 높이는 데 도움이 되지만, 런타임에 발생하는 오류를 잡는 데는 한계가 있습니다. 따라서, 런타임 타입 검증이 필요한 경우가 많습니다. Zod를 사용하면 런타임에 데이터의 타입을 검증하여 코드의 안정성을 높일 수 있습니다.

Zod와 TypeScript의 관계 설명

TypeScript의 정적 타입 검증은 코드를 작성하는 시점에 타입 오류를 잡아냅니다. 하지만, 런타임에 발생하는 오류를 잡을 수는 없습니다. 예를 들어, 사용자 입력 데이터의 타입을 검증해야 하는 경우에는 런타임 타입 검증이 필요합니다. Zod를 사용하면 이러한 경우에 데이터의 타입을 검증하여 코드의 안정성을 높일 수 있습니다.

2. Zod의 기본 사용법

Zod의 기본 사용법은 간단합니다. 먼저, Zod 스키마를 정의해야 합니다. Zod 스키마는 데이터의 구조를 정의하는 것입니다. 예를 들어, 사용자 입력 데이터의 스키마를 정의하는 경우에는 다음과 같이 코드를 작성할 수 있습니다.

import { z } from 'zod';

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

그 다음, Zod의 유효성 검증 함수를 사용하여 데이터의 타입을 검증할 수 있습니다. 예를 들어, 사용자 입력 데이터를 검증하는 경우에는 다음과 같이 코드를 작성할 수 있습니다.

const userInput = {
  name: 'John Doe',
  age: '30',
};

try {
  const result = userSchema.parse(userInput);
  console.log(result);
} catch (error) {
  console.error(error);
}

이 코드에서는 사용자 입력 데이터의 타입을 검증하여 오류가 발생하면 에러 메시지를 출력합니다. Zod의 에러 핸들링 방법은 다양합니다. 예를 들어, 에러 메시지를 사용자에게 출력하거나, 에러를 기록하거나, 에러를 재할 수 있습니다.

3. Zod와 TypeScript의 통합

Zod와 TypeScript를 통합하여 코드의 안정성을 높일 수 있습니다. Zod의 타입 시스템과 TypeScript의 타입 시스템을 통합하여 코드의 안정성을 높일 수 있습니다. 예를 들어, Zod 스키마를 TypeScript의 인터페이스 또는 클래스와 통합하여 코드의 안정성을 높일 수 있습니다.

import { z } from 'zod';

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

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

const userInput: User = {
  name: 'John Doe',
  age: 30,
};

try {
  const result = userSchema.parse(userInput);
  console.log(result);
} catch (error) {
  console.error(error);
}

이 코드에서는 Zod 스키마와 TypeScript의 인터페이스를 통합하여 코드의 안정성을 높입니다. Zod의 타입 시스템과 TypeScript의 타입 시스템을 통합하여 코드의 안정성을 높일 수 있습니다.

Zod와 TypeScript의 통합 예시

4. 실제 예제와 적용

Zod를 실제로 적용하여 코드의 안정성을 높일 수 있습니다. 예를 들어, API 요청 데이터의 검증, 폼 데이터의 검증, Zod의 확장성과 커스텀 기능을 사용하여 코드의 안정성을 높일 수 있습니다.

import { z } from 'zod';
import axios from 'axios';

const apiSchema = z.object({
  id: z.number(),
  name: z.string(),
});

axios.get('/api/data')
  .then(response => {
    try {
      const result = apiSchema.parse(response.data);
      console.log(result);
    } catch (error) {
      console.error(error);
    }
  })
  .catch(error => {
    console.error(error);
  });

이 코드에서는 API 요청 데이터의 타입을 검증하여 코드의 안정성을 높입니다. Zod의 확장성과 커스텀 기능을 사용하여 코드의 안정성을 높일 수 있습니다.

Zod를 사용하면 런타임에 데이터의 타입을 검증하여 코드의 안정성을 높일 수 있습니다. Zod의 기본 사용법, Zod와 TypeScript의 통합, 실제 예제와 적용을 통해 코드의 안정성을 높일 수 있습니다. Zod를 사용하여 코드의 안정성을 높여보세요.

728x90
반응형