1

Angular v5 アプリで NGRX v4.1.1 を使用しています ("strictNullChecks": true問題ないように見えますが)。

ストアでエラーが表示されます。以下を考えると:

showLists: Observable<boolean>;

constructor(private store: Store<State>) {}

ngOnInit() {
  this.showLists = this.store.select('contactsFeature', 'contactsReducer', 'showListsPanel');
}

Typescript で次のエラーが発生していますthis.store.select():

Type 'Store<boolean>' cannot be converted to type 'Observable<boolean>'.
Property '[Symbol.observable]' is missing in type 'Store<boolean>'.

ストアのスライスを ( を使用して.select) 選択し、それを型の変数に割り当てるこの方法は、ドキュメントObservable<>公式に概説されています(実際には、ドキュメントが ngrx v5 推奨 API に更新されていることがわかりますが、v5 はリリースされていません。まだなので、次の最新バージョンのドキュメントにリンクしました)。

問題は、と互換性のないstore.select()戻り値の型があることです。Store<>Observable<>

ただし、これはストアとやり取りする「公式」の方法です(と思います)。だから私は何がうまくいかないのだろうかと思っています。を無効strictNullChecksにしても、まだエラーが発生します。1 か月後に戻ってきたプロジェクトでエラーが発生しましたが、正確にいつ開始されたのか (または明らかにその理由) を判断できません。

どんな提案でも大歓迎です:)

PS: Typescriptでは、リターンをオブザーバブルにキャストできません。.select()

アップデート

npm を更新すると、エラー メッセージが改善されました。rxjs のインターフェースが更新されたか、おそらく ngrx のインターフェースが更新されたようです。

ERROR in apps/coordination/src/app/contacts/contacts-tools.component.ts(21,5): error TS2322: Type 'Store<boolean>' is not assignable to type 'Observable<boolean>'.
  Types of property 'subscribe' are incompatible.
    Type '{ (observer?: NextObserver<boolean> | ErrorObserver<boolean> | CompletionObserver<boolean> | unde...' is not assignable to type '{ (observer: Observer<boolean>): Subscription; (onNext: (value: boolean) => void, onError?: ((err...'.
      Types of parameters 'observer' and 'observer' are incompatible.
        Type 'Observer<boolean>' is not assignable to type 'NextObserver<boolean> | ErrorObserver<boolean> | CompletionObserver<boolean> | undefined'.
          Type 'Observer<boolean>' is not assignable to type 'CompletionObserver<boolean>'.
            Types of property 'complete' are incompatible.
              Type '(() => void) | undefined' is not assignable to type '() => void'.
                Type 'undefined' is not assignable to type '() => void'.
4

2 に答える 2