带有私人成员的Typescript接口

时间:2018-11-21 22:46:51

标签: typescript

为什么打字稿在界面中不支持私有成员?

如何处理以下情况?

interface IFoo
{
  private member: {};
}

class Foo implements IFoo
{
  private member = {};
}

1 个答案:

答案 0 :(得分:2)

接口定义了“公共合同”,它描述了类的公共方面,因此拥有私有访问修饰符就没有意义。

From Typescript interface documentation

  

这禁止您使用它们来检查班级是否也有   类实例的私有方面的特定类型。


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

来自Understanding 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;
}