需安装reflect-metadata库以支持Reflect.metadata
参考:https://github.com/typestack/class-transformer
import { plainToClass, Expose, Type } from "class-transformer";
import "reflect-metadata";
class Addr {
@Expose()
provience!: string;
@Expose()
city!: string;
get all() {
return this.provience + "." + this.city;
}
}
class User {
@Expose()
name!: string;
@Expose()
sex!: string;
@Expose()
age!: string;
@Type(() => Addr)
@Expose()
addr!: Addr;
get description() {
return `${this.name} ${this.sex} ${this.age}岁`;
}
}
const resList = [
{
name: "liu",
sex: "m",
age: 25,
job: "javascript",
addr: { provience: "SiChuan", city: "ChengDu" },
},
{
name: "xie",
sex: "f",
age: 21,
addr: { provience: "SiChuan", city: "ChengDu" },
},
];
let users = plainToClass(User, resList, { excludeExtraneousValues: true });
console.log(users);
console.log(users[0].addr.all)