在Typescript中实现接口时如何定义私有属性?
我在项目中使用TypeScript,但遇到了一个问题。我正在定义这样的接口:
interface IModuleMenuItem { name: string;
}
我想创建一个从该接口实现的类,但我希望该名称成为这样的私有属性:
class ModuleMenuItem implements IModuleMenuItem { private name: string;
}
我收到以下错误:
类ModuleMenuItem错误地实现了接口IModuleMenuItem。属性名称在ModuleMenuItem类型中是私有的,但在IModuleMenuItem类型中则不是。
在实现接口时如何将属性定义为私有或受保护?
回答:
接口定义了“公共”合同,因此在接口上拥有protected
或private
访问修饰符没有任何意义,更多的是实现细节。因此,您无法使用界面执行所需的操作。
如果要使该属性对使用者只读,但可在子类中重写,则可以执行以下操作:
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