打字稿:强类型传入数组变量类型

Typescript: Strongly type incoming array with variable types

我有一个 JSON 数组,它可以包含由 IPersonICompany 定义的两种类型之一。

[ 
            { "Name"  : "Bob", "Age" : 50, "Address": "New Jersey"},
            { "Name"  : "ABC Inc", "Founded" : 1970, "CEO": "Alice" }
]

此数据是从端点接收的。我想在我的 Typescript 客户端应用程序中以完全相同的方式映射这些数据。在这种情况下我应该如何定义我的模型。

我知道我们可以在 TypeScript 中定义相同的接口,但是是否可以有一个数组来保存由 IPersonICompany 定义的两个对象中的任何一个,并在迭代时知道每个项目的类型数组?

你可以有一个Array<IPerson | ICompany>。对于迭代,你可以做这样的事情

function iterateMyArray(array: Array<IPerson | ICompany>) {
  array.forEach(item => {
     if ('Age' in item) {
        // item is an person
        console.log(item.Address);
     } else {
        // item is a company
     }
  })
}