2017-07-11 18 views
0

事実: 私はTS v。2.3.4を使用しています。私は、天候が確定していることを確認する関数を作成しました(パラメータとしてvariableをとり、'undefined' !== typeof variableを返します)。ケーキの平和。タイプチェックとコンパイルエラーのTypescript外部関数

export function IsDefined(variable: any): boolean { 
    return 'undefined' !== typeof variable; 
} 

問題:コードの下が2行に警告を生成します。 waringは、オブジェクトがおそらく定義されていないと言っています

if (IsDefined(myVar)) { 
    myVar.mockProperty = "asdf"; //Object (myVar, obviously) is possibly undefined 
} 

質問:IsDefined()方法は未定義値に対して変数をチェックするTSコンパイラに伝えるためにどのような方法がありますので、それは偽の情報と警告していないのですか?これを回避する他の方法はありますか?私が知っていると、彼らはコードが汚れますので、私は、使用して喜んでいないよ

回避策:

  • (<myType>myVar).mockProperty = "asdf";
  • if ("undefined" !== typeof myVar) {

答えて

1

あなたがここに型ガードを使用したいです。 IsDefinedの定義変更:

export function IsDefined(variable: any): variable is {} { 
    return 'undefined' !== typeof variable; 
} 

を、今コンパイラがIsDefinedからtrueを返すものは対象としませundefinedであることを知っているだろう。

+0

うわー、素敵な機能。私は急いでドキュメントを読んでいるに違いない);ありがとう! –

関連する問題