Interface Typescript-使用类作为接口,为什么我必须实现私有成员/方法?

Interface Typescript-使用类作为接口,为什么我必须实现私有成员/方法?,interface,typescript,mixins,Interface,Typescript,Mixins,我正在使用Mixin模式,如下所示。为什么Typescript要求您为目标类(A)中mixin类的私有属性提供替代属性?对于公共属性来说,这是完全有意义的,但是对于私有属性,它不必要地通过要求在目标类中删除mixin类的内部实现细节来破坏目标类。似乎Typescript transpiler不需要这样做 class Mixin { private foo:string; } class A implements Mixin { // stand-in properties, ty

我正在使用Mixin模式,如下所示。为什么Typescript要求您为目标类(A)中mixin类的私有属性提供替代属性?对于公共属性来说,这是完全有意义的,但是对于私有属性,它不必要地通过要求在目标类中删除mixin类的内部实现细节来破坏目标类。似乎Typescript transpiler不需要这样做

class Mixin {
    private foo:string;
}

class A implements Mixin {
   // stand-in properties, typescript requires even
   // private properties to be stubbed-out 
   foo:string;
}

私有成员构成了TypeScript中类型的结构,因此如果不实现它们,则与该类型不兼容。这实际上使得在TypeScript中,如果类型具有私有成员,就无法在结构上匹配该类型,因为您:

a。未能提供类型

b。提供私有成员的单独实现

因此,您只能
扩展带有私有成员的类型,而不能
实现它


记住这一点,最好不要在mixin中使用私有成员。在实现类中提供重影成员,并祈祷如果mixin获得一些牵引力,重影将变得不必要(请参阅)。

您发布的代码有错误;从
A
中删除
foo
将删除错误。你能再试试这个样品吗?哦,好的。。这应该是实现而不是扩展。