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

Class 'SnackbarService' incorrectly extends base class 'MatSnackBar'. Types have separate declarations of a private property '_overlay'.

@angular/material扩展到MatSnackBar.

这是我的代码:

import { MatSnackBar } from '@angular/material';
import { Overlay } from '@angular/cdk/overlay';
import { LiveAnnouncer } from '@angular/cdk/a11y';
...

export class SnackbarService extends MatSnackBar {

  constructor(
    private _overlay: Overlay, 
    private _liveAnnouncer: LiveAnnouncer,
    ...
  ) {
    super(_overlay, _liveAnnouncer, ...);
    }
  }
}

如果您能提供任何形式的帮助,解释为什么会发生这种情况,我们将不胜感激.

推荐答案

之所以会出现这种情况,是因为通过将构造函数声明为接受private _overlay参数,您已经创建了自己的_overlay,但这已经在基类MatSnackBar中定义.

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

export class SnackbarService extends MatSnackBar{

  constructor(
    _overlay: Overlay, 
    _liveAnnouncer: LiveAnnouncer,
    ...
  ) {
     super(_overlay, _liveAnnouncer, ...);
    }
  }
}

你仍然可以通过this.访问它们

Typescript相关问答推荐

如何在同一页面中使用布局和提供程序?

交叉点对数字和布尔的处理方式不同

替代语法/逻辑以避免TS变量被分配之前使用." "

在Angular中注入多个BrowserModules,但在我的代码中只有一个

HttpClient中的文本响应类型选项使用什么编码?''

为什么TypeScript假设文档对象始终可用?

在MessageStore对象中实现条件类型时出现TypeScrip错误

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

如果字符串文字类型是泛型类型,则用反引号将该类型括起来会中断

通过字符串索引访问对象';S的值时出现文字脚本错误

是否可以判断某个类型是否已合并为内部类型?

刷新时保持当前名称的Angular

无法将从服务器接收的JSON对象转换为所需的类型,因此可以分析数据

类型推断对React.ForwardRef()的引用参数无效

我可以使用typeof来强制执行某些字符串吗

S,为什么我的T扩展未定义的条件在属性的上下文中不起作用?

打字脚本中的模块化或命名空间

打字脚本错误:`不扩展[Type]`,而不是直接使用`[Type]`

我的类型谓词函数不能像我预期的那样工作.需要帮助了解原因

在Vite中将SVG导入为ReactComponent-不明确的间接导出:ReactComponent