単一の等号は割り当てを意味することを知っています。 doubleは平等を意味します。トリプルは平等で同じタイプを意味します。
この場合、TypeScriptリンターが三重の等号を使用する理由を理解できません。
function gcf(a: number, b: number): number
{
return (b == 0) ? (a) : (gcf(b, a % b));
}
TsLint:==は===でなければなりません
私は0が数字であること、そしてbが数字であることを知っています(そうでなければコンパイルエラーが発生します)。では、なぜこの場合に三重等号を使用するのでしょうか?
型は、==
に起因するallエラーからあなたを救うことができません。特にundefined
とnull
はallタイプと互換性があるためです。例えば次の場合は正しくありません:
var foo:number = null;
if (foo == undefined) {
console.log('is undefined'); // actually null
}
これらが等しい理由の詳細については https://stackoverflow.com/a/359509/9519
個人的に:このルールを無効にしましたが、問題はありませんでした。私はtrue/false/null/undefined
とは比較せず、ただif
と比較します。また、TypeScriptはstrings
とnumbers
の比較を妨げるため、対処する必要があるエラーではありません。
また、三重等号演算子を使用すると、結果のJavascriptが外部ファイル(つまり、TypeScript環境の外部)から呼び出される場合に役立ちます。純粋なJSファイルはtslintによって処理されず、トリプル等式を「必要とする」ことにより、tslintは結果のJavascriptファイルの復元力を少し高めます。