Typescript - 如何创建具有多种类型的数组

时间:2021-04-21 09:03:03

标签: typescript

我有一个通用接口和两个接口“Person”和“Employee”,它们扩展了第一个接口:

    export interface Common {
        id: number,
        name: string
      }

      export interface Person extends Common {
        age: number;
      }

      export interface Employee extends Common {
        role: string;
      }

我需要有一个混合了这些接口的数组,例如这个:

listOfPeople: Person[] | Employee[] = [{id: 1, name: 'George', age: 4}, {id: 2, name: 'Micheal', role: 'software developer'}];

但是这样我就出错了。获得我想要的结果的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以组合这些类型并使用联合类型将它们声明为 listOfPeople 的类型。

所以我猜这会起作用

listOfPeople: (Person|Employee)[]

因为 listOfPeople 是一个可以包含其中任何一个的数组。你必须让 TS 知道它是一个数组。

const listOfPeople: (Person|Employee)[] = [{id: 1, name: 'George', age: 4}, {id: 2, name: 'Micheal', role: 'software developer'}];

答案 1 :(得分:1)

另一种(可能更清楚)编写这种类型的方法是:

listOfPeople: Array<Person | Employee>;
相关问题