모델 매퍼(ModelMapper)
스프링의 경우 DTO와 엔티티간의 변환을 할 때 ModelMapper나 Mapstruct라는 라이브러리를 많이 사용합니다. 그러면, 객체가 가질 수 있는 프로퍼티는 옮겨지게 되고, 아닌 프로퍼티는 버려지게 되죠.
JS는 그러한 역할이 없어서 상당히 불편했습니다. Interface를 고집한다는 점과 Class instance와 Literal object 간 변환이 어렵다는 점이 이유입니다. 그나마 쓸만한 라이브러리가 AutoMapper인데 사용하기가 어렵고 유지보수가 중지되었죠.
그래서 최근에 나와서 핫한 라이브러리 중 하나가 class-transformer입니다. 이 라이브러리는 ModelMapper 역할을 훌륭하게 수행할 수 있고, 상당히 강력하고 간단합니다. 최근 commit을 보거나, star 수를 보더라도 충분히 신뢰할만 하다고 할 수 있습니다. (창고링크)
※ 모델 매퍼에 대해 알아보기.
plainToInstance
객체 리터럴(plain)을 인스턴스(class)로 변환. 인스턴스(param#1)를 기준으로 객체(param#2)에 있는 프로퍼티들이 인스턴스의 멤버변수와 일대일로 매칭되는 것들만 채워진다. 만약 인스턴스의 멤버변수에 매칭되는 것이 없는 객체의 프로퍼티들은 새로운 인스턴스가 생성될때 포함되지 않는다.
param#1: 인스턴스
param#2: 객체 리터럴
param#3: 옵션
instanceToPlain
인스턴스(class)를 객체 리터럴(plain)로 변환. plainToInstance와 반대의 개념.
댓글