Discriminator + Deserialize does not appropriately create objects when used with Arrays.
I'm attempting to use deserialize with Discriminator support.

I noticed an issue, so i'm going to use the example to demonstrate that problem.

The object we create in the example is below:

```ts
const list = {
  data: [
    {
      type: "page_view",
      value: "value",
      url: "https://url"
    },
    {
      type: "action",
      value: "value",
      event: "event"
    },
    {
      type: "click_action",
      value: "value",
      event: "event"
    }
  ]
};
```
Because `data` is an Array, the TS type should be represented as such.

Example below.

```ts
class DataObject {
   data: Array<ObjectType1 | ObjectType2 | ObjectType3>
}
```

If you copy and paste the full example code (below), the issue should become clear.

Specifically, deserialize does NOT make the internal objects appropriately when used with Array.

Example Code
```ts
import { deserialize } from "@tsed/json-mapper";
import {
  DiscriminatorKey,
  DiscriminatorValue,
  OneOf,
  Property,
  Required,
} from "@tsed/schema";

class Event {
  @DiscriminatorKey() // declare this property a discriminator key
  type: string;

  @Property()
  value: string;
}

class SubEvent extends Event {
  @Property()
  meta: string;
}

@DiscriminatorValue("page_view") // or @DiscriminatorValue() value can be inferred by the class name
class PageView extends SubEvent {
  @Required()
  url: string;
}

@DiscriminatorValue("action", "click_action")
class Action extends SubEvent {
  @Required()
  event: string;
}

@DiscriminatorValue()
class CustomAction extends Event {
  @Required()
  event: string;

  @Property()
  meta: string;
}
/**
STOP HERE, COMMENT / UNCOMMENT TO `data` TO SEE THE PROBLEM
*/
class Tracking {
  // If data is NOT an Array, this works.
  @OneOf(PageView, Action, CustomAction)
  data: PageView | Action | CustomAction;

  // If data IS an Array, this fails
  // @OneOf(PageView, Action, CustomAction)
  // data: Array<PageView | Action | CustomAction>;
}

describe("test", () => {
  it("check", () => {
    const list = {
      // Data is an ARRAY, not a single object so the example on the website is indeed incorrect. 
      data: [
        {
          type: "page_view",
          value: "value",
          url: "https://url",
        },
        {
          type: "action",
          value: "value",
          event: "event",
        },
        {
          type: "click_action",
          value: "value",
          event: "event",
        },
      ],
    };

    const result = deserialize(list, {
      type: Tracking,
    });

    expect(result.data[0]).toBeInstanceOf(PageView);
    expect(result.data[1]).toBeInstanceOf(Action);
    expect(result.data[2]).toBeInstanceOf(Action);
  });
});

```