在启用--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>
还是其他什么?
答案 0 :(得分:5)
no-null-keyword
只是一个棉绒规则。它的主要目的是防止你因使用undefined和null而增加的复杂性,以达到类似的目的。
但它不会为您的供应商代码库删除它,并且它在很多库中使用。
如果你需要检查null和undefined值,那么 result == undefined
确实是一个非常有效的JS习惯用法。这不被视为黑客(AFAIK),并且比简单但危险的Falsy检查更为可取:if (!result) {..}
。
tslint甚至允许其===
规则的例外:
"triple-equals": [true, "allow-undefined-check"]