2016-03-21 11 views
2

Typescriptでは、この意味は誰にでも分かりますか?ここでTypeScriptのコンストラクタ構文

constructor(obj?:any){ 
    this.id = obj && obj.id || null; 
} 

は私の推測です:(obj.idが値を持っている)それは(objがnullでない)場合のように思える

と、その後obj.id割り当て、そうでない場合は、this.idする場合はnull割り当てますか? ?

私は約15-20か所(サイト/ドキュメント)を探しましたが、まだ答えは見つかりません。私はちょうどTypeScriptの学習を始めて申し訳ありません。誰もが良いリファレンスを知っていますか?ご協力いただきありがとうございます。

答えて

4

あなたの直感は良いです!要約は次のとおりです。JavaScript内のブール型以外の型にあるif, &&, and ||のような演算子は、それらの型をブール値として評価します。最も一般的には、これは何かがnull(偽)かオブジェクト(真)かを判断するのに役立ちます。

は、objではなく、trueではありません。したがって、ヌル統合では便利です。例:name = mightBeNull && mightBeNull.name。このコンストラクタを書くため

より詳細な方法は、次のようになります。

if (obj) { 
    this.id = obj.id; 
} 
else { 
    this.id = null; 
} 

これは、コードスタイルの問題のようなものだ - それは意図が何であるか確かにあまり明らかだが、あなたは、多くの経験豊富なJavaScriptのプログラマの中にいるときに、ルーチンのパターンを完全に自己文書化するのではなく、人々が慣れ親しんだパターンで短いコードを好むことは理にかなっているかもしれません。

(最後に、上記の説明では、JavaScriptと活字体にも同様に適用されることに注意してください)

+1

マイナーポイント:より詳細な方法は、 'obj.id'のチェックを含める必要があります。参照するには、元のコードとこの冗長なコードを 'obj = {id:undefined} 'を使って比較してください。オリジナルでは 'null'となり、これは' undefined 'になります。または、 'obj = {id:false}' ...オリジナルをチェックすると、 'null'とこれが' false'になります。 –

+0

私はあなたがしようとしていることを理解しています。しかし、 'null && obj'は常にあなたに' null'を与えます。 – Dave

+0

@Daveそれは正しい - 私は例を更新しました。 – Katana314

関連する問題