1. ホーム
  2. javascript

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

2022-02-16 10:31:21

質問

私は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.