web-dev-qa-db-ja.com

TSLintの二重対三重の平等

単一の等号は割り当てを意味することを知っています。 doubleは平等を意味します。トリプルは平等で同じタイプを意味します。

この場合、TypeScriptリンターが三重の等号を使用する理由を理解できません。

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

TsLint:==は===でなければなりません

私は0が数字であること、そしてbが数字であることを知っています(そうでなければコンパイルエラーが発生します)。では、なぜこの場合に三重等号を使用するのでしょうか?

21
user886079

型は、==に起因するallエラーからあなたを救うことができません。特にundefinednullallタイプと互換性があるためです。例えば次の場合は正しくありません:

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はstringsnumbersの比較を妨げるため、対処する必要があるエラーではありません。

22
basarat

また、三重等号演算子を使用すると、結果のJavascriptが外部ファイル(つまり、TypeScript環境の外部)から呼び出される場合に役立ちます。純粋なJSファイルはtslintによって処理されず、トリプル等式を「必要とする」ことにより、tslintは結果のJavascriptファイルの復元力を少し高めます。

6
Darren Oster