接口定义了"公共"契约,因此在接口上使用protected
或private
访问修饰符是没有意义的,这更像是一个实现细节.由于这个原因,你不能用一个接口做你想做的事情.
如果要使属性对使用者为只读,但在子类中可重写,则可以执行以下操作:
interface IModuleMenuItem {
getName(): string;
}
class ModuleMenuItem implements IModuleMenuItem {
private name;
public getName() {
return name;
}
protected setName(newName : string) {
name = newName;
}
}
我认为在TypeScript2.0(还没有推出)中,如果在初始化时间之后是只读字段-https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html,则可以使用readonly
访问修饰符
interface IModuleMenuItem {
readonly name : string;
}
class ModuleMenuItem implements IModuleMenuItem {
public readonly name : string;
constructor() {
name = "name";
}
}