2016-11-07 3 views
1

をフィルタリング:Rxjsは、私がこのフィルタを有しているサンプリングするで探していますshiftKey

Observable.fromEvent(this.getNativeElement(this.btn), 'click') 
     .filter(event => event.shiftKey) 
     .map(event => 'Beast Mode Activated!!!') 
     .subscribe(message => this.message = message); 

私のプロジェクトでは"rxjs": "5.0.0-beta.5"

を参照して、この1私はエラーを取得しています:

[ts] Property 'shiftKey' does not exist on type '{}'. any

私は参照しています"rxjs": "5.0.0-beta.12"

どちらの場合も同じエラーが出ます。私は輸入に持っているものである

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/fromEvent'; 
import 'rxjs/add/operator/filter'; 
import 'rxjs/add/operator/map'; 

答えて

2

それだけで{}型として扱われevent

.filter(event => event.shiftKey) 

には型情報がありませんので。それを「キャスト」するかタイプを指定することができます

.filter((event: any) => 
.filter((event: ExpectedEventType) => 
.filter(event => (<any>event).shiftKey) 

これらはいずれも有効です。 ExpectedEventTypeでは、実際のイベントの種類に置き換える必要があります。これは、あなたが強いタイピングを気にしている場合のみです。これが問題でない場合は、anyを使用してください。

+0

今、私は '.filter(event =>(イベント).shiftKey)'と書かなければなりません。 '.filter(event => event.shiftKey)'を保つ方法はありますか? – sreginogemoh

+0

タイプスクリプトのコンパイルエラーです。 AFAIK、方法はありません。それを抑制する方法があったとしても、なぜあなたはしたいですか?ちょっときれいに見えるようにするには、 '(event:any)'型を使用してください。 –

+0

OKです。しかし、どのように '(event:any)'を使うのですか?あなたはサンプルを提供できますか – sreginogemoh

関連する問題