2016-10-10 1 views
2

Ich habe die folgende FunktionWie eine optionale param mit einem anderen Zwang in Typoskript

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

Mein Problem ist, dass, wenn id existiert dann someVariable vorhanden sein muss. Wenn nicht, wird die Logik in dieser Methode nicht funktionieren und eine Ausnahme wird auftreten.

Eine der Lösungen besteht darin, die beiden Variablen in einer Klasse zu setzen. Ich frage mich jedoch, ob es solche Fähigkeiten in Maschinenschrift gibt.

Ich benutze Typescript 2.0.3.

+0

Warum Sie werfen nicht nur eine Ausnahme? 'if (id &&! EinigeVariable) {Ausnahme auslösen}' –

+0

ah Sie haben bereits eine Ausnahme. Was stimmt damit nicht? Es ist ein Missbrauch dieser Methode, so sollte es eine Ausnahme auslösen, imho –

+0

@HerrDerb Ich frage nur über eleganter Weise. – hex

Antwort

3

können Sie function overloading für diesen Einsatz:

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

Dann Unterschrift tatsächliche Umsetzung ist nicht aufrufbar:

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