plainToInstance

agnusdei·2023년 7월 11일
0

plainToInstance는 class-transformer 라이브러리에서 제공하는 함수로, plain JavaScript objects를 class 인스턴스로 변환하는 기능을 수행합니다. 이 함수는 주로 서버에서 수신한 JSON 데이터를 JavaScript 객체로 변환할 때 사용됩니다.

plainToInstance 함수는 두 개의 매개변수를 받습니다:

  1. classType: 변환할 대상 클래스의 타입을 지정합니다. 이는 변환된 객체의 클래스 타입을 결정하는 데 사용됩니다.
  2. plainObject: 변환할 plain JavaScript object입니다. 일반적으로 JSON 데이터가 여기에 해당합니다.

plainToInstance 함수는 classType에 지정된 클래스의 인스턴스를 생성하고, plainObject의 속성 값을 사용하여 해당 인스턴스를 채웁니다. 이 과정에서 class-transformer 라이브러리의 데코레이터나 메타데이터를 사용하여 변환 규칙을 적용할 수 있습니다.

예를 들어, 다음은 plainToInstance 함수를 사용하여 변환하는 간단한 예시입니다:

import { plainToInstance } from 'class-transformer';

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

const plainObject = {
  name: 'John',
  age: 25,
};

const userInstance = plainToInstance(User, plainObject);
console.log(userInstance); // User { name: 'John', age: 25 }

위의 예시에서 User 클래스는 nameage라는 두 개의 속성을 가지고 있습니다. plainObject는 이와 동일한 속성을 가진 JavaScript 객체입니다. plainToInstance(User, plainObject)를 호출하면 plainObject의 속성 값을 사용하여 User 클래스의 인스턴스인 userInstance를 생성하고 초기화합니다.

plainToInstance 함수는 단일 객체뿐만 아니라 객체의 배열이나 리스트도 처리할 수 있습니다. 다음은 리스트를 처리하는 예시입니다:

import { plainToInstance } from 'class-transformer';

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

const plainArray = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 30 },
];

const userInstances = plainArray.map(plainObject => plainToInstance(User, plainObject));
console.log(userInstances);
// [
//   User { name: 'John', age: 25 },
//   User { name: 'Jane', age: 30 }
// ]

위의 예시에서 plainArrayplainToInstance 함수를 사용하여 User 클래스의 인스턴스 배열로 변환됩니다. plainArray.map()을 사용하여 각 객체를 plainToInstance(User, plainObject)로 변환하고, userInstances 배열에 저장합니다.

이와 같이 plainToInstance 함수는 class-transformer 라이브러리를 통해 JavaScript 객체를 class 인스턴스로 변환하는 데 유용한 도구입니다.

0개의 댓글