Javascript 类型具有私有属性的单独声明

Javascript 类型具有私有属性的单独声明,javascript,typescript,Javascript,Typescript,我正在学习Angular(用打字机书写),我偶然发现了这个错误: 类“SnackbarService”错误地扩展了基类“MatsnakBar”。 类型具有私有属性“\u overlay”的单独声明。 当尝试从@角度/材料延伸Matsnakbar时 这是我的代码: 从'@angular/material'导入{matsnakbar}; 从'@angular/cdk/Overlay'导入{Overlay}; 从'@angular/cdk/a11y'导入{LiveAnnouncer}; ... 导出类

我正在学习Angular(用打字机书写),我偶然发现了这个错误:

类“SnackbarService”错误地扩展了基类“MatsnakBar”。 类型具有私有属性“\u overlay”的单独声明。

当尝试从
@角度/材料
延伸
Matsnakbar

这是我的代码:

从'@angular/material'导入{matsnakbar};
从'@angular/cdk/Overlay'导入{Overlay};
从'@angular/cdk/a11y'导入{LiveAnnouncer};
...
导出类SnackbarService扩展了MatsnakBar{
建造师(
私有覆盖:覆盖,
二等兵现场播音员:现场播音员,
...
) {
超级(_叠加,_实况播音员,…);
}
}
}

如果您能提供任何类型的解释来解释为什么会发生这种情况,我们将不胜感激。

之所以会发生这种情况,是因为通过将构造函数声明为使用
私有覆盖
参数,您已经创建了自己的
\u覆盖
,但这已经在基类
Matsnakbar
中定义

从声明中删除
private
部分,并从基类继承它。对其他构造函数参数执行相同的操作

导出类SnackbarService扩展了MatsnakBar{
建造师(
_叠加:叠加,
_现场播音员:现场播音员,
...
) {
超级(_叠加,_实况播音员,…);
}
}
}

您仍然可以通过
此访问它们。

如果依赖项版本不匹配,也会发生这种情况。[从打字脚本的角度]

例如,如果您的应用程序A使用软件包B的1.0版和软件包C的1.0版。但是,包C使用包B的不同版本,比如2.0

现在,在整个构建过程中有两个同名的不同类。
要解决此问题,您必须升级程序包C或程序包B,以便在应用程序中使用相同的版本。

在某些情况下,它可能是在两个类中定义的重复属性。在抽象基类中,构造函数参数仍然可以声明为
private readonly
,但是派生类型不需要任何访问修饰符。这是一个显而易见的要点,但上面没有说明-如果您想在派生类中使用注入的成员,那么在基类中,构造函数参数不能声明为private,在我的例子中,我必须将父组件中的属性更改为
protected
,以便能够通过
this
访问子组件中的属性,让服务扩展组件有点奇怪!?虽然这不是直接关于你的问题,但它引起了我的皱眉,这是我的问题。