Skip to content

fix: allow plain to class to convert from Set to Set instead of from Set to Array #1723

Open
@onhate

Description

@onhate

Description

When converting from plain to class on an plain object that already has a Set the target property that is also a Set is converted to Array.

class User {
  id: number;
  name: string;
  @Type(() => Set)
  weapons: Set<string>;
}

const plainUser = {
  id: 1,
  name: 'Max Pain',
  weapons: new Set(['knife', 'eagle', 'ak-47']),
};

const classedUser = plainToInstance(User, plainUser);
expect(classedUser.weapons).toBeInstanceOf(Set); <~~~ fails here

Expected behavior

If the target is of type Set and source already is a Set should return a Set.

Actual behavior

It converts the target property of the class to Array.

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs triageIssues which needs to be reproduced to be verified report.type: fixIssues describing a broken feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions