2017-10-18 65 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'总是错误的,使用函数'isNaN(bar)'代替。 – CRice

+0

@CRice更新以包括'isNaN(巴)'' – series0ne

+0

Number.isNaN'应该被用来检查该'NaN'值。 – zerkms

回答

2

基本上我想打字稿生成

你将不得不自己编写:

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

为什么你要更改签名并手动执行'undefined'的检查? – zerkms

+2

@zerkms,这样它就不会在两个地方传播。已更新,以尽可能多地保留原始代码。 – basarat

+0

我知道了,谢谢.. – zerkms