2016-12-02 84 views
0

我爲我的TypeScript應用程序啓用了strictNullChecks。我使用的是用TypeScript編寫的RxJS 5。但是,它並未啓用strictNullChecks有沒有辦法只爲非庫代碼啓用strictNullChecks?

因此,當我做到以下幾點:

Observable.fromEvent(document.getElementById('button'), 'click') 

我收到以下錯誤:

Error TS2345: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'EventTargetLike'. 
Type 'null' is not assignable to type 'EventTargetLike'. 

換句話說,當RxJS says第一個參數應該是一個EventTargetLike,其實際意思是它應該大致是一個EventTargetLike | null - 這就是使用TypeScript配置時的情況。

是否有辦法讓TypeScript在可用時使用庫的配置(即不關閉類型檢查全部,如this question中所述,並且不適用於非默認庫)。

回答

1

what it actually means is that it should be roughly an EventTargetLike | null

可能不是。它實際上需要一個目標,你不應該傳遞可能爲空的東西。快速修復:

let btn = document.getElementById('button'); 
Observable.fromEvent(btn!, 'click'); 

如果你是在告訴與!編譯器我知道BTN不爲空。或者你可以做檢查,使編譯器高興:

let btn = document.getElementById('button'); 
if (btn != null){ 
    Observable.fromEvent(btn, 'click'); 
} 
+0

實際上,它並檢查目標是否是像空意想不到的事情:https://github.com/ReactiveX/rxjs/blob/master/src/ observable/FromEventObservable.ts#L138 這就是說,我想你是對的,我可能想這樣做,檢查我自己,並以優雅的方式處理。所以謝謝指導如何做到這一點:) – Vincent

相關問題