2017-10-18 6 views
0

を確認してください。活字体コンストラクタ式は、我々がそうのようなデフォルト値でコンストラクタを構築することができ活字体で

class Foo { 
    constructor(public bar: number = 0) { 
     // this.bar is 0 if constructed with no arguments. 
    } 
} 

活字体は、以下の急務を生成します。

if(bar === void 0) bar = 0; 

は短期を宣言する方法はありますNaNが割り当てられないように、同様の方法で手続き構文を使用しますか?

基本的に私は活字体を生成したい:

if(bar === void 0 || isNaN(bar)) bar = 0; 
+0

私の知る限り、そこにありますそれを自動的に行う方法はありません。あなたが言うように、省略形の構文は、パラメータが省略された場合にのみ、デフォルト値を割り当てる方法です。それが含まれている場合は、望ましくない値が手動でないかチェックする必要があります。ああ、 'bar === NaN'は常にfalseです。代わりに' isNaN(bar) '関数を使います。 – CRice

+0

@CRiceに 'isNaN(bar) 'が追加されました。 – series0ne

+0

' NaN'値をチェックするために 'Number.isNaN'を使用する必要があります。 – zerkms

答えて

2

基本的に私はあなたがそれを自分で記述する必要があります活字体が

を生成したい:

class Foo { 
    constructor(public bar: number = 0) { 
     if (isNaN(bar)) this.bar = 0; 
    } 
} 
+0

なぜ署名を変更し、 'undefined'のチェックを手動で実装しましたか? – zerkms

+2

@zerkmsそれは2つの場所に広がっていないように。可能な限り元のコードを維持するように更新されました。 – basarat

+0

私は、感謝を参照してください – zerkms

関連する問題