tslint no-null-keyword和typescript< lib.d.ts,带有严格的空值检查

时间:2016-11-10 08:29:48

标签: typescript2.0

在启用--strictNullChecking的情况下,我已经使用 tslint 一段时间了。最近,我已升级到 Typescript 2.0 并启用了lib.d.ts。但是,查看Typescript no-null-keyword,似乎无法启用null(乍一看),因为某些调用的结果可能是const result: RegExpExecArray | null = regex.exec(regexStr); if (result === null) { // <-- tslint complains about this check throw new Error("Foo location: result of regex is null."); } // or // if (result !== null) { // ...do something // } 。例如:

no-null-keyword

问题是什么是正确的事情

tslint 停用const result: RegExpExecArray = regex.exec(regexStr)!; if (result == undefined) { // Will check if result is undefined or null throw new Error("Foo location: result of regex is null."); }

使用hack(?):

kubectl taint nodes --all dedicated-
kubectl apply -f <add-on.yaml>

还是其他什么?

1 个答案:

答案 0 :(得分:5)

no-null-keyword只是一个棉绒规则。它的主要目的是防止你因使用undefined和null而增加的复杂性,以达到类似的目的。

但它不会为您的供应商代码库删除它,并且它在很多库中使用。

如果你需要检查null和undefined值,那么

result == undefined确实是一个非常有效的JS习惯用法。这不被视为黑客(AFAIK),并且比简单但危险的Falsy检查更为可取:if (!result) {..}

tslint甚至允许其===规则的例外:

"triple-equals": [true, "allow-undefined-check"]