是否可以在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。
答案 0 :(得分:11)
尝试以任何语言理解Interface
的{{3}}。
由于Interface
是任何人都可以用来访问某些类功能的架构,因此其字段不能是私有的或受保护的
答案 1 :(得分:2)
界面是一种契约,意味着你告诉自己你自己可以做什么以及你拥有什么,通过让它们受到保护你违反了合同。
话虽如此,你想强制实现作为受保护范围的东西,你可以使用抽象类来满足这种需要。它们是版本1.6 https://github.com/Microsoft/TypeScript/issues/3578
的新版本<强>更新强>
abstract
无法应用于属性,因此为了使其工作,cssClass需要是一个返回字符串的方法。