我知道单个等号意味着分配;双重意味着平等;和三重意味着平等和相同的类型。
我不明白为什么打字稿linter会让我在这种情况下使用三重等号:
function gcf(a: number, b: number): number
{
return (b == 0) ? (a) : (gcf(b, a % b));
}
TsLint:==应该是===
我知道0是一个数字,我也知道b是一个数字(否则我会得到一个编译错误)。那么为什么我要在这种情况下使用三重等号?
答案 0 :(得分:21)
类型无法避免因==
导致的所有错误。特别是因为undefined
和null
与所有类型兼容。例如以下是不正确的if:
var foo:number = null;
if (foo == undefined) {
console.log('is undefined'); // actually null
}
有关这些原因相等的更多信息https://stackoverflow.com/a/359509/95190
个人:我已禁用此规则,从未遇到任何问题。我不能与true/false/null/undefined
进行比较,只需与if
进行比较。打字稿会阻止比较strings
和numbers
,因此这不是我需要处理的错误。
答案 1 :(得分:6)
使用三重等式运算符还可以节省您从外部文件(即TypeScript环境之外)调用结果Javascript的情况。纯粹的JS文件不是由tslint处理的,而是要求'三重相等,tslint使得生成的Javascript文件更具弹性。