需安装reflect-metadata库以支持Reflect.metadata
    参考:https://github.com/typestack/class-transformer

    1. import { plainToClass, Expose, Type } from "class-transformer";
    2. import "reflect-metadata";
    3. class Addr {
    4. @Expose()
    5. provience!: string;
    6. @Expose()
    7. city!: string;
    8. get all() {
    9. return this.provience + "." + this.city;
    10. }
    11. }
    12. class User {
    13. @Expose()
    14. name!: string;
    15. @Expose()
    16. sex!: string;
    17. @Expose()
    18. age!: string;
    19. @Type(() => Addr)
    20. @Expose()
    21. addr!: Addr;
    22. get description() {
    23. return `${this.name} ${this.sex} ${this.age}岁`;
    24. }
    25. }
    26. const resList = [
    27. {
    28. name: "liu",
    29. sex: "m",
    30. age: 25,
    31. job: "javascript",
    32. addr: { provience: "SiChuan", city: "ChengDu" },
    33. },
    34. {
    35. name: "xie",
    36. sex: "f",
    37. age: 21,
    38. addr: { provience: "SiChuan", city: "ChengDu" },
    39. },
    40. ];
    41. let users = plainToClass(User, resList, { excludeExtraneousValues: true });
    42. console.log(users);
    43. console.log(users[0].addr.all)