如何在Typescript中获得接口的单个实例

如何在Typescript中获得接口的单个实例,typescript,interface,instantiation,Typescript,Interface,Instantiation,我试图弄清楚如何在Typescript中获得接口的单个实例。我有以下有效的代码: export interface IOpenStatus { filePath: string; openSuccess: boolean; error: string; fileData: string; } openStatus: IOpenStatus[]; 但是,如果我只想定义接口的一个实例,则此将失败: openStatus: IOpenStatus; 这也失败了:

我试图弄清楚如何在Typescript中获得接口的单个实例。我有以下有效的代码:

export interface IOpenStatus {
    filePath: string;
    openSuccess: boolean;
    error: string;
    fileData: string;
}

openStatus: IOpenStatus[];
但是,如果我只想定义接口的一个实例,则此将失败:

openStatus: IOpenStatus;
这也失败了:

let openStatus= new IOpenStatus();
似乎数组“[]”以某种方式替代了实例创建机制(尽管是多个实例)。在我的情况下,我从来不想实例化多个接口实例

如何实例化接口的单个实例?我需要使用一个接口,因为我要用这个接口从服务器返回这个数据

更新 我可以看出部分问题是我没有指定上下文。我在Angular2应用程序中这样做。在我的情况下,我使用

openStatus:IOpenStatus[]

作为类属性定义的一部分(确切地说是组件)。似乎数组表示法只允许Javascript预测接口类型的数组的实例化,而无需任何进一步的定义(它可以在之后立即用作这样的数组)

我必须做的是,最终利用:

userOpenStatus=newopenstatus()

是在类中实现接口,例如:

export interface IOpenStatus {
    filePath: string;
    openSuccess: boolean;
    error: string;
    fileData: string;
}

export class OpenStatus implements IOpenStatus {
    filePath: string;
    openSuccess: boolean;
    error: string;
    fileData: string;
}
鉴于:

这本身就是一个语法错误:

openStatus: IOpenStatus[];
(尽管它作为类属性声明是有效的。)您可能需要以下内容:

let openStatus: IOpenStatus[];
这与纯JS版本完全对应:

let openStatus;
唯一的区别是类型注释。如果您不希望它是您的类型的数组,只需说:

let openStatus: IOpenStatus;
为了出现在
new
关键字之后,标识符必须是构造函数的名称,声明其中一个构造函数的最简单方法是使用
class
关键字。但您可以使用类型文字:

openStatus = {
    filePath: "/blah",
    openSuccess: true,
    error: "",
    fileData: "Hello, world."
};

它具有
IOpenStatus
所需的所有属性,因此可以将其分配给该类型的变量。

不能实例化接口。它们的存在是为了有一个没有实现的契约,因此实例化与它们存在的全部原因背道而驰
是否实现了一个接口数组?
IOpenStatus[]
只是声明
openStatus
以最终包含一个
IOpenStatus
数组,它没有实现或实例化任何内容。如果您在问题中确切说明发生了什么,而不是“它失败了”,您可能会得到更多帮助。它是如何失败的?编译时错误?错误信息是什么?还是运行时问题?再说一遍,什么错误消息?
openStatus = {
    filePath: "/blah",
    openSuccess: true,
    error: "",
    fileData: "Hello, world."
};