为什么我的接口联合不起作用?

Why doesn't my Union of interfaces work?

我有一个名为 IContact 的接口,它将作为单个对象或数组包含在响应对象中。我试过在界面中编写代码

export interface ResponseObject {
    data:IContact|Array<IContact>;

}

但我得到

error TS2339: Property 'name' does not exist on type 'IContact | IContact[]'.

换句话说

我的应用程序使用 data:IContact 进行编译,只需添加“|string”即可使 data:IContact|string 它因上述错误而失败。

我应该如何正确定义我的接口?

它工作正常,如下所示:

interface IContact {
    name: string;
}
interface ResponseObject {
    data: IContact|Array<IContact>;
}

var response: ResponseObject = {
    data: {
        name: '123'
    }
};

Try it online

备注:

a.) 确保为 visual studio 安装了 TS 1.4。

b.) Webstorm 不支持 TS 1.4,除非您使用 beta 频道。