多个打字稿构造函数

时间:2014-05-19 18:14:41

标签: constructor typescript

我正在与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吗?

谢谢! 森

1 个答案:

答案 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