class-transformer Исключить неопределенные свойства

Исключите из класса неопределенные или пустые свойства. это реальная природа, но мне нужен декоратор, который может игнорировать это

import {Expose, plainToClass} from "class-transformer";

class User {
    @Expose() id: number;
    @Expose() firstName: string;
    @Expose() lastName: string;
}

const fromPlainUser = {
  unkownProp: 'hello there',
  firstName: 'Umed',
  lastName: 'Khudoiberdiev',
}

console.log(plainToClass(User, fromPlainUser, { excludeExtraneousValues: true }))

// User {
//   id: undefined,
//   firstName: 'Umed',
//   lastName: 'Khudoiberdiev'
// }

2 ответа

добавьте exposeUnsetFields к вашему обычному объекту опций. Должно быть:

      
plainToClass(User, fromPlainUser, { excludeExtraneousValues: true, exposeUnsetFields: false, })

Если вы создадите экземпляр класса, у вас будут его свойства. Если вы хотите иметь объект без неопределенных свойств - просто преобразуйте экземпляр класса обратно в простой объект с правилами, которые избегают неопределенных полей. Это больше не будет экземпляром класса, но это будет объект без неопределенных полей.

Другие вопросы по тегам