typescript - class-transformer Exclude proprietăți nedefinite


Excludeți proprietățile nedefinite sau null din clasă. aceasta este natura reală, dar am nevoie de un decorator care să poată ignora acest lucru

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'
// }

Răspuns #1

Dacă creezi o instanță de clasă, atunci vei avea proprietățile ei. Dacă vrei să ai un obiect fără proprietăți nedefinite - pur și simplu convertește o instanță de clasă înapoi într-un obiect simplu cu reguli care evită câmpurile nedefinite. Nu va mai fi o instanță de clasă, dar va fi un obiect fără câmpuri nedefinite.

Răspunsul #2

adaugă exposeUnsetFields la obiectul tău simplu de opțiuni. Ar trebui să fie:

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