2016-11-07 50 views
1

我期待在品嚐它有此過濾器:Rxjs過濾Shift鍵,

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"

在我的項目,我得到一個錯誤:

[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 =>( event).shiftKey)'看起來有點有線。有沒有辦法保留'.filter(event => event.shiftKey)'? – sreginogemoh

+0

這是TypeScript編譯錯誤。 AFAIK,沒有辦法。即使有辦法壓制它,你爲什麼要?只要使用'(事件:任何)'類型',如果你想要一個更清潔的外觀 –

+0

好吧,我明白了。但你將如何使用'(event:any)'?你能否提供樣品 – sreginogemoh