[typescript] 타입스크립트와 JSON 데이터의 상호 변환 방법

타입스크립트에서는 JSON 데이터와의 변환 작업이 빈번히 발생합니다. 이를 위해서는 JSON.stringify()JSON.parse()를 사용하여 JavaScript 객체와 JSON 문자열 간의 변환을 쉽게 할 수 있습니다. 하지만 이러한 방법은 타입 정보를 잃어버리는 문제가 있습니다.

JSON.stringify()와 JSON.parse()의 문제점

JSON.stringify() 함수를 사용하여 JavaScript 객체를 JSON 문자열로 변환할 수 있습니다. 그리고 JSON.parse() 함수를 사용하여 JSON 문자열을 JavaScript 객체로 변환할 수 있습니다. 이것은 매우 간단하고 유용한 방법입니다. 하지만 이러한 방법은 타입 정보를 유지할 수 없다는 문제가 있습니다. 예를 들어, JSON 데이터를 TypeScript의 인터페이스와 함께 사용하려고 할 때, JSON.parse()를 통해 얻는 객체가 TypeScript의 인터페이스와 일치하지 않는 경우가 있을 수 있습니다.

Class-transformer 라이브러리를 활용한 JSON과 타입스크립트 클래스의 상호 변환

이러한 문제를 해결하고자, 타입스크립트에서는 class-transformer 라이브러리를 활용하여 JSON과 타입스크립트 클래스 간의 상호 변환을 지원합니다.

예시 코드를 통해 살펴보겠습니다.

import { plainToClass, classToPlain } from 'class-transformer';

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

const json = { name: 'John Doe', age: 30 };
const user = plainToClass(User, json);
console.log(user instanceof User); // Output: true

const plainUser = classToPlain(user);
console.log(plainUser); // Output: { name: 'John Doe', age: 30 }

class-transformer 라이브러리를 사용하면, plainToClass()를 통해 JSON 데이터를 타입스크립트 클래스의 인스턴스로 변환할 수 있으며, classToPlain()을 통해 타입스크립트 클래스의 인스턴스를 JSON 데이터로 변환할 수 있습니다.

이를 활용하여 타입 정보를 유지한 채로 JSON 데이터와 타입스크립트 클래스 간의 변환을 수행할 수 있습니다.

마무리

타입스크립트에서 JSON 데이터와의 상호 변환은 class-transformer 라이브러리를 활용하여 타입 정보를 유지하면서 간단히 처리할 수 있습니다. 이러한 라이브러리를 활용하여 JSON과 타입스크립트 클래스 간의 변환 작업을 보다 효율적으로 처리할 수 있습니다.

더 많은 정보는 여기에서 확인할 수 있습니다.