Estoy aprendiendo Angular (que está escrito en TypeScript) y me topé con este error:
La clase 'SnackbarService' extiende incorrectamente la clase base 'MatSnackBar'. Los tipos tienen declaraciones separadas de una propiedad privada '_overlay'.
al intentar extender MatSnackBar desde @angular/material .
Este es mi código:
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, ...); } } }Cualquier ayuda con cualquier tipo de explicación sobre por qué sucede esto sería realmente apreciada.
Esto sucede porque al declarar que el constructor toma un parámetro private _overlay , ha creado su propio _overlay , pero eso ya está definido en la clase base MatSnackBar .
Elimina la parte private de la declaración y hereda de la clase base. Haga lo mismo con los demás parámetros del constructor.
export class SnackbarService extends MatSnackBar{ constructor( _overlay: Overlay, _liveAnnouncer: LiveAnnouncer, ... ) { super(_overlay, _liveAnnouncer, ...); } } } Todavía puedes acceder a ellos a través de this.
Esto también sucede en los casos en que la versión de las dependencias no coincide. [Desde la perspectiva mecanografiada]
Por ejemplo, si su aplicación A usa la versión 1.0 de un paquete B y la versión 1.0 del paquete C. Sin embargo, el paquete C usa una versión diferente del paquete B , digamos 2.0.
Ahora tiene dos clases diferentes con el mismo nombre en el proceso de compilación general. Para resolverlo, debe actualizar el paquete C o el paquete B, para tener la misma versión en la aplicación.