带有私有成员的 Typescript 接口

Ahm*_*mal 2 typescript

为什么打字稿不支持接口中的私有成员?

以下场景如何处理?

interface IFoo
{
  private member: {};
}

class Foo implements IFoo
{
  private member = {};
}
Run Code Online (Sandbox Code Playgroud)

Maa*_*rti 5

接口定义了“公共契约”,它描述了类的公共端,因此拥有私有访问修饰符是没有意义的。

来自 Typescript 接口文档

这禁止您使用它们来检查类是否也具有用于类实例的私有端的特定类型。


但是接口可以使用私有成员扩展类。

理解打字稿

在 TypeScript 中,接口也可以扩展类,但仅限于涉及继承的方式。当接口扩展类时,接口包括所有类成员(公共和私有),但不包括类的实现。

class Customer
{
  private id: number;
  get Id(): number
  {
    return this.id
  }
  set Id( value: number )
  {
    this.id = value;
  }
}
interface ICustomer extends Customer
{
  MiddleName: string;
}
Run Code Online (Sandbox Code Playgroud)