2016-12-13 13 views
0

TypescriptプロジェクトでstrictNullChecksフラグを使用しています。Typescript strictNullChecks構文

function hello(a: string | null) { 
    if (a !== null) { 
    console.log(a.length); // Here, "a" can only be a string 
    } 
} 

コンパイラは完全にここに動作します:

は、以下の機能を考えてみましょう。

は、しかし、私が代わりにif (typeof a !== "null")あるいは書く場合lodashのif (!_.isNull(a))コンパイラが理解できないだろうとaはおそらくnull可能と文句を言うだろう。

これらの代替構文を使用する方法はありますか?

+0

本当にこのコンパイラフラグが何をしていますか? https://www.typescriptlang.org/docs/handbook/compiler-options.html – Fals

+0

また、 'typeof(a = null)==="オブジェクト "' [_forforforeacy reasons_](https://developer.mozilla。 –

+0

ロダッシュの型が更新され、 'if(!_ isNull(a))'が適切な型のガードを今すぐ行う必要があります –

答えて

2

しかし、代わりにif (typeof a !== "null")と書くと、コンパイラは理解できず、aがnullになる可能性があると不平を言います。

typeof null === "object"、ない"null"ので、これは良いことです。 TypeScriptは、nullの正常でないテスト方法を考慮しません。

+0

ありがとうございます'if(typeof a!==" null ")'が良いアプローチではないことを思い出させます。今から 'a!== null'を使うつもりです。 –

関連する問題