1. ホーム
  2. javascript

[解決済み] タイプは、プライベートプロパティを個別に宣言しています。

2022-11-11 13:27:12

質問

私はAngular(TypeScriptで書かれています)を学んでいて、このエラーに遭遇しました。

クラス 'SnackbarService' はベースクラス 'MatSnackBar' を正しく継承していません。 タイプはプライベートプロパティ '_overlay' を別々に宣言しています。

を拡張しようとすると MatSnackBar から @angular/material .

これは私のコードです。

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.