在Typescript中实现接口时如何定义私有属性?

我在项目中使用TypeScript,但遇到了一个问题。我正在定义这样的接口:

interface IModuleMenuItem {

name: string;

}

我想创建一个从该接口实现的类,但我希望该名称成为这样的私有属性:

class ModuleMenuItem implements IModuleMenuItem {

private name: string;

}

我收到以下错误:

类ModuleMenuItem错误地实现了接口IModuleMenuItem。属性名称在ModuleMenuItem类型中是私有的,但在IModuleMenuItem类型中则不是。

在实现接口时如何将属性定义为私有或受保护?

回答:

接口定义了“公共”合同,因此在接口上拥有protectedprivate访问修饰符没有任何意义,更多的是实现细节。因此,您无法使用界面执行所需的操作。

如果要使该属性对使用者只读,但可在子类中重写,则可以执行以下操作:

interface IModuleMenuItem {

getName(): string;

}

class ModuleMenuItem implements IModuleMenuItem {

private name;

public getName() {

return name;

}

protected setName(newName : string) {

name = newName;

}

}

我认为在TypeScript 2.0(尚未发布)中,readonly如果您在初始化时只读字段之后可以使用access修饰符-https:

//basarat.gitbooks.io/typescript/content/docs/types/readonly.html

interface IModuleMenuItem {

readonly name : string;

}

class ModuleMenuItem implements IModuleMenuItem {

public readonly name : string;

constructor() {

name = "name";

}

}

以上是 在Typescript中实现接口时如何定义私有属性? 的全部内容, 来源链接: utcz.com/qa/434993.html

回到顶部