我正在与TS构造函数斗争。我也会在stackoverflow上发布这个帖子。
假设你想要相当于这三个构造函数:
public Animal(){
this.name = “default”;
this.noise =””;
public Animal(string name){
this.name = name;
this.noise = “”;
}
public Animal(string name, string noise){
this.name = name;
this.noise = noise;
}
你在打字稿中做过类似的事吗?
Constructor(name?:string, noise?:string){
if(name!= null)
this.name =name;
else
this.name = "";
if(string != null)
this.noise = noise;
else
this.noise = "";
}
等等?
如果您还有各种原语,那么您可以使用int或字符串声明动物。你刚才使用instanceof吗?
谢谢! 森
答案 0 :(得分:3)
这可以非常简单地完成:
class Animal {
public name: string;
public noise: string;
constructor(name = 'default', noise = '') {
this.name = name;
this.noise = noise;
}
}
这也完全等同于:
class Animal {
constructor(public name = 'default', public noise = '') {
}
}
请注意,JavaScript中缺少的参数的值为undefined
,而不是null
。