2016-12-02 3 views
0

Я включил strictNullChecks для моего приложения TypeScript. Я использую RxJS 5, который написан в TypeScript. Он, однако, не включил strictNullChecks.Есть ли способ включить только строковыеNullChecks для небиблиотечного кода?

Следовательно, когда я делаю следующее:

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 использовать конфигурацию библиотеки, когда она доступна (т. Е. Без отключения проверки типа alltogether, как описано в 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'); 

Где вы сообщаете компилятору с ! что я знаю БТН не быть пустым. В качестве альтернативы вы можете сделать чек, чтобы сделать компилятор счастливым:

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

На самом деле, это проверить, является ли цель что-то неожиданное, как нуль: https://github.com/ReactiveX/rxjs/blob/master/src/ наблюдаемый/FromEventObservable.ts # L138 Это, я думаю, вы правы, что я, вероятно, захочу сделать это и сам проверить, и с этим справиться грациозно. Так что спасибо за указатели на то, как это сделать :) – Vincent

Смежные вопросы