fix: ExposeAll does not work with excludeExtraneousValues

Author: johny1614Created May 18, 2021Updated May 12, 2026
Labelstype: fixstatus: needs triage

Description

Strategy 'exposeAll' does not work as expected with true excludeExtraneousValues flag. Actual behaviour is as all properties were not exposed.

Minimal code-snippet showcasing the problem

class Dog {
  name: string;
}
const plainDoggie = {
      name: 'Azor',
      surname: 'dogs does not have surnames :('
};
const doggie = plainToClass(Dog, plainDoggie, {
      strategy: 'exposeAll',
      excludeExtraneousValues: true
});
console.log('doggie', doggie);
// should be {name:'Azor'}, but is {} instead

StackBlitz example

Expected behavior

All properties are exposed. In above example doggie = {name: 'Azor'}

Actual behavior

Properties are not exposed. In above example doggie = {}

Source: typestack/class-transformer