在接口

时间:2015-10-01 13:05:43

标签: typescript

是否可以在TypeScript接口中声明受保护的属性?

例如:

interface IsDrawable {
  // protected // <- seems to be unsupported
  cssClass: string;
}

class SomeClass implements IsDrawable {
  protected // <- errors
  cssClass: string;
}

SomeClass错误与“Class”SomeClass'错误地实现了接口'IsDrawable'。属性'cssClass'在'SomeClass'类型中受到保护,但在'IsDrawable'类型中是public。

2 个答案:

答案 0 :(得分:11)

尝试以任何语言理解Interface的{​​{3}}。

由于Interface是任何人都可以用来访问某些类功能的架构,因此其字段不能是私有的或受保护的

答案 1 :(得分:2)

界面是一种契约,意味着你告诉自己你自己可以做什么以及你拥有什么,通过让它们受到保护你违反了合同。

话虽如此,你想强制实现作为受保护范围的东西,你可以使用抽象类来满足这种需要。它们是版本1.6 https://github.com/Microsoft/TypeScript/issues/3578

的新版本

<强>更新

abstract无法应用于属性,因此为了使其工作,cssClass需要是一个返回字符串的方法。