2016-11-10 10 views
3

私はno-null-keywordを有効にして、しばらくの間tslintを使用していました。最近、Typescript 2.0にアップグレードし、--strictNullCheckingを有効にしました。しかし、Typescriptのlib.d.tsを見ると、一部の呼び出しの結果がnullになる可能性があるので、一見してno-null-keywordを有効にしておくことは不可能です。たとえば:tslint nullでないキーワードとtypescriptのlib.d.tsが厳密なヌルチェック付き

const result: RegExpExecArray | null = regex.exec(regexStr); 

if (result === null) { // <-- tslint complains about this check 
    throw new Error("Foo location: result of regex is null."); 
} 

// or 
// if (result !== null) { 
//  ...do something 
// } 

質問は、右のもの-TO-DOは何かありますか?

無効no-null-keywordtslint? (?):

const result: RegExpExecArray = regex.exec(regexStr)!; 

if (result == undefined) { // Will check if result is undefined or null 
    throw new Error("Foo location: result of regex is null."); 
} 

それとも何か他

はハックを使用しますか?

答えて

2

no-null-keywordは単なるリントルールです。主な目的は、しばしば同様の目的で、未定義とnullの両方を使用するという複雑さを回避することです。

ベンダのコードベースでは削除されず、多くのライブラリで使用されます。

result == undefinedは、null値と未定義値をチェックする必要がある場合は、実際には完全に有効なJSイディオムです。これはハック(AFAIK)とはみなされず、単純ではあるが危険なファルシーチェックよりもはるかに好ましい。if (!result) {..}

tslintもその===ルールの例外を許可します。 `「三重イコール」:[真」、

"triple-equals": [true, "allow-undefined-check"]

+0

うん、私は質問をしているので、それは私が今までやっていたまさにですfoo == undefined'または 'foo!= undefined'というコードと、理由を明確にした適切なコメントとともに、「allow-undefined-check」]' を入力してください。 – vladeck

関連する問題