2014-03-29 101 views
8

我知道一個等號表示賦值;雙重意味着平等;而三聯意味着平等和相同的類型。TSLint double vs triple equality

我不明白爲什麼打字稿棉短絨會要我在這種情況下使用的三重等號:

function gcf(a: number, b: number): number 
{ 
    return (b == 0) ? (a) : (gcf(b, a % b)); 
} 

TsLint:==應該===

我知道0是一個數字,我也知道b是一個數字(否則我會得到一個編譯錯誤)。那麼爲什麼我要在這種情況下使用三重平等標誌?

+0

雖然在TypeScript中不太可能導致問題,但這是一個嚴格的比較 - 我不知道爲什麼你不想使用它? http://stackoverflow.com/a/359509/95190在JavaScript中使用它通常是很好的做法。 – WiredPrairie

回答

9

類型無法爲您節省全部==引起的錯誤。特別是因爲undefinednull兼容所有類型。例如以下是不正確的,如果:

var foo:number = null; 

if (foo == undefined) { 
    console.log('is undefined'); // actually null 
} 

欲瞭解更多信息爲什麼這些都是平等https://stackoverflow.com/a/359509/95190

個人:我有過這樣的規則禁用,從未發生過任何問題。我不比較true/false/null/undefined,只是if他們。打字稿可防止比較stringsnumbers,這不是我需要處理的錯誤。

2

使用三重相等運算符還可以在由外部文件(即TypeScript環境以外)調用生成的Javascript時保存。純JS文件不是由tslint處理的,並且通過'要求'三重等式,tslint使得生成的JavaScript文件更具彈性。