2016-09-12 2 views
0

Ich möchte Verwendung von Typoskript Typprüfung in RPC-Aufruf machen, aber mein RPC-Aufruf ist wie folgt:Wie man Typ Parameter durch Typoskript prüft?

return await dataCaller.callWebService(apiId,req); 

so mit vielen RPC-Aufruf, ich so definieren müssen:

// get_by_product.ts 
async function get_by_product(req:DataCenter.o2o.shipment_fare.get_by_product.Request):Promise<DataCenter.o2o.shipment_fare.get_by_product.Response>{ 
return await dataCaller.callWebService("o2o.shipment_fare.get_by_product",req); 
} 

// check_by_order.ts 
async function check_by_order(req:DataCenter.o2o.shipment_fare.check_by_order.Request):Promise<DataCenter.o2o.shipment_fare.check_by_order.Response>{ 
return await dataCaller.callWebService("o2o.shipment_fare.check_by_order",req); 
} 

// check_by_cart.ts 
async function check_by_cart(req:DataCenter.o2o.shipment_fare.check_by_cart.Request):Promise<DataCenter.o2o.shipment_fare.check_by_cart.Response>{ 
return await dataCaller.callWebService("o2o.shipment_fare.check_by_cart",req); 
} 

dann kann ich get_by_product mit Typprüfung, anrufen, wie ich Typprüfung erhalten kann, ohne so viele Funktion zu definieren?

+0

können Sie den Code für die Anfrage und Antwort Schnittstellen veröffentlichen /Klassen? – Magu

Antwort

0

können Sie union types verwenden:

function strOrNum(a: number): string | number { 
    if(a > 0) { 
     return a; 
    } 
    return "Negative"; 
} 

auch in den Bereichen Generika:

interface IObj<T> { 
    value: T; 
} 

function strOrNum(a: number): IObj<string | number> { 
    if(a > 0) { 
     return { value: a }; 
    } 
    return { value: "Negative" }; 
} 

Und in Ihrem Fall:

async function get_by_product(req:DataCenter.o2o.shipment_fare.get_by_product.Request): Promise<DataCenter.o2o.shipment_fare.get_by_product.Response | DataCenter.o2o.shipment_fare.check_by_order.Response | DataCenter.o2o.shipment_fare.check_by_cart.Response> { 
    return await dataCaller.callWebService("o2o.shipment_fare.get_by_product",req); 
}