【发布时间】:2017-08-24 13:59:36
【问题描述】:
我知道这可能是一个经典的 javascript 问题,但我发现自己经常使用:
if (!something) {
//...
}
在 TypeScript 中验证此 something 不是 undefined 或 null。
这很容易出错!在number 上使用时,“0”将匹配,而在enum 上使用时,第一项也将匹配(默认情况下,第一项的值为“0”)!
有没有办法在 TypeScript 中处理这个问题?有没有办法将 TypeScript 配置为禁止在除 boolean(和 any)之外的任何内容前面使用感叹号?这种配置有意义还是我遗漏了一些微不足道的东西?
应该:
if (something === null || something === undefined) {
//...
}
改为用于验证是否已定义某些内容?有没有办法在团队中强制执行?
【问题讨论】:
-
出于某种原因,“经典 javascript”让我不寒而栗。就个人而言,我认为打字稿更“经典”。
-
你也许可以为它写一个 tslint 规则。
-
您可以编写自定义 lint 规则来防止这种情况。除非您将其设置为观看,否则在您运行 linting 任务之前它不会捕获它。至少你会得到通知它已经发生了,然后你可以去修复它。如果发现任何错误,我们将 linting 任务设置为使构建失败。这样,无论谁编写它,都必须在合并之前对其进行修复。
标签: javascript typescript tslint