在接口中声明受保护的属性

AJP*_*AJP 8 typescript

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

例如:

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

class SomeClass implements IsDrawable {
  protected // <- errors
  cssClass: string;
}
Run Code Online (Sandbox Code Playgroud)

带有"Class"SomeClass'的SomeClass错误错误地实现了接口'IsDrawable'.属性'cssClass'在'SomeClass'类型中受到保护,但在'IsDrawable'类型中是public.

Ole*_*uka 16

试着去理解意义上Interface任何语言.

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

  • 但是,如果您遵循 https://github.com/Microsoft/TypeScript/issues/25163#issuecomment-433643933 那么显然这个问题并非没有根据。在类中设置属性的可见性而不愿意在接口中定义它仍然会导致 TypeScript 抛出这个具有误导性的错误。 (5认同)