我有一个通用接口和两个接口“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'}];
但是这样我就出错了。获得我想要的结果的正确方法是什么?
答案 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>;