如何在打字稿中约束另一个可选参数

时间:2016-10-10 06:46:43

标签: typescript

我有以下功能

        private map(model: Model, id?: number, someVariable?:number) {... }

我的问题是如果id存在,那么someVariable必须存在。如果不是,则此方法中的逻辑将不起作用,并且将出现异常。

其中一个解决方案是在类中设置两个变量。但是,我想知道打字稿中是否有这样的功能。

我正在使用Typescript 2.0.3。

1 个答案:

答案 0 :(得分:3)

您可以使用function overloading

map(model: Model);
map(model: Model, id: number, someVariable:number);
map(model: Model, id?: number, someVariable?:number) {
    //implementation
}

然后实际的实现签名不可调用:

this.map(m); //valid
this.map(m, 1, 2); //valid
this.map(m, 1); //error