[typescript] 타입스크립트 제네릭을 이용한 데이터 유효성 검사 방법

타입스크립트는 데이터 유효성을 강력하게 검사할 수 있는 기능을 제공합니다. 이를 통해 컴파일 시점에 데이터 유효성을 확인하여 런타임 에러를 방지할 수 있습니다.

이번 블로그에서는 타입스크립트의 제네릭을 활용하여 데이터 유효성을 검사하는 방법에 대해 살펴보겠습니다.

1. 제네릭을 사용한 데이터 유효성 검사

제네릭을 이용하면 재사용성이 뛰어나며, 타입 안정성을 보장할 수 있습니다. 아래는 간단한 예제를 통해 제네릭을 사용하여 데이터 유효성을 검사하는 방법을 확인해보겠습니다.

type ValidateResult<T> = {
  valid: boolean;
  message: string;
  data: T | null;
};

function validateData<T>(data: T, validator: (data: T) => boolean, errorMessage: string): ValidateResult<T> {
  if (validator(data)) {
    return { valid: true, message: 'Data is valid', data };
  } else {
    return { valid: false, message: errorMessage, data: null };
  }
}

// Usage
const email = 'example@example.com';
const emailValidator = (email: string) => /\S+@\S+\.\S+/.test(email);
const validationResult = validateData<string>(email, emailValidator, 'Invalid email format');
console.log(validationResult);

위 예제에서 ValidateResult는 유효성 검사 결과를 담는 타입입니다. validateData 함수는 제네릭을 이용하여 인자로 전달된 데이터를 주어진 유효성 검사 함수를 통해 검사하고, 그 결과를 ValidateResult 타입으로 반환합니다.

2. 제네릭을 활용한 보다 복잡한 유효성 검사

제네릭을 사용하면 보다 복잡한 데이터 구조에 대한 유효성 검사도 쉽게 구현할 수 있습니다. 아래 예제는 객체의 각 필드에 대한 유효성을 확인하는 validateObject 함수를 제네릭을 사용하여 구현한 것입니다.

type ValidationResult<T> = {
  valid: boolean;
  message: string;
  data: T | null;
};

function validateObject<T>(obj: T, validators: { [K in keyof T]: (value: T[K]) => boolean }): ValidationResult<T> {
  for (const key in validators) {
    if (!validators[key](obj[key])) {
      return { valid: false, message: `Invalid value for ${key}`, data: null };
    }
  }
  return { valid: true, message: 'Object is valid', data: obj };
}

// Usage
const user = {
  name: 'John Doe',
  age: 30,
  email: 'john.doe@example.com'
};
const userValidators = {
  name: (name: string) => name.length > 0,
  age: (age: number) => age > 0,
  email: (email: string) => /\S+@\S+\.\S+/.test(email)
};
const validationResult = validateObject(user, userValidators);
console.log(validationResult);

위 예제에서는 validateObject 함수를 통해 사용자 객체의 각 필드에 대한 유효성을 확인하고, 그 결과를 ValidationResult 타입으로 반환합니다.

제네릭을 이용하면 데이터의 유효성을 강력하게 보장할 수 있으며, 코드의 가독성과 재사용성을 높일 수 있습니다.

타입스크립트 제네릭을 활용하여 데이터 유효성을 검사하는 방법에 대해 알아보았습니다. 제네릭을 적절히 활용하여 데이터 유효성 검사 로직을 간결하게 구현하고, 안정적인 코드를 작성하는 데 도움이 되길 바랍니다.

참고 자료:

이상으로 타입스크립트 제네릭을 이용한 데이터 유효성 검사 방법에 대한 내용을 마치도록 하겠습니다. 감사합니다.