plainToInstance
는 class-transformer 라이브러리에서 제공하는 함수로, plain JavaScript objects를 class 인스턴스로 변환하는 기능을 수행합니다. 이 함수는 주로 서버에서 수신한 JSON 데이터를 JavaScript 객체로 변환할 때 사용됩니다.
plainToInstance
함수는 두 개의 매개변수를 받습니다:
classType
: 변환할 대상 클래스의 타입을 지정합니다. 이는 변환된 객체의 클래스 타입을 결정하는 데 사용됩니다.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
클래스는 name
과 age
라는 두 개의 속성을 가지고 있습니다. 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 }
// ]
위의 예시에서 plainArray
는 plainToInstance
함수를 사용하여 User
클래스의 인스턴스 배열로 변환됩니다. plainArray.map()
을 사용하여 각 객체를 plainToInstance(User, plainObject)
로 변환하고, userInstances
배열에 저장합니다.
이와 같이 plainToInstance
함수는 class-transformer 라이브러리를 통해 JavaScript 객체를 class 인스턴스로 변환하는 데 유용한 도구입니다.