gpt4 book ai didi

typescript2.0 - tslint no-null-keyword 和 typescript 的 lib.d.ts 带有严格的空检查

转载 作者:行者123 更新时间:2023-12-05 00:53:55 25 4
gpt4 key购买 nike

我一直在用 tslint no-null-keyword 相处了很长时间启用。最近,我升级到 typescript 2.0 并启用 --strictNullChecking .但是,查看 Typescript 的 lib.d.ts ,似乎无法保留 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.");
}

或者是其他东西?

最佳答案

no-null-keyword只是一个 lint 规则。它的主要目的是防止您为通常类似的目的同时使用 undefined 和 null 增加复杂性。

但它不会为您的供应商代码库删除它,并且它被用于许多库中。
result == undefined如果您需要检查 null 和 undefined 值,这确实是一个完全有效的 JS 习惯用法。这不被认为是 hack (AFAIK),并且比简单但危险的 Falsy 检查更可取:if (!result) {..} .

tslint 甚至允许其 === 异常(exception)规则:
"triple-equals": [true, "allow-undefined-check"]

关于typescript2.0 - tslint no-null-keyword 和 typescript 的 lib.d.ts 带有严格的空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com