有没有办法只为非库代码启用strictNullChecks?

时间:2016-12-02 16:29:38

标签: typescript typescript-typings typescript2.0

我为我的TypeScript应用程序启用了strictNullChecks。我使用的是RxJS 5,它是用TypeScript编写的。但是,它尚未启用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 个答案:

答案 0 :(得分:1)

  

它实际意味着它应该大致是一个EventTargetLike |空

可能不是。它实际上想要一个目标,你不应该传递可能为null的东西。快速修复:

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

你告诉编译器! 我知道btn不是null 。或者,您可以进行检查以使编译器满意:

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