我有一个函数callRest。
public callRest(payload: any, url: string){
this.$httpservice.post(url, payload);
}
我希望能够在有效负载中传递多个参数。例如,有效载荷可能有两个变量:data&标题或只是一个:数据。在这两种情况下,我都希望发送请求以发送在有效负载内发送的所有参数。像
这样的东西this.$httpservice.post(url, data, header); &
this.$httpservice.post(url, data);//depending upon the structure of payload.
//payload can be anything we want to define it as.
我可以在Python中用* payload这样做。如何在Typescript中实现此行为?我的问题有两个方面,我如何传递变量参数,然后如何将这些变量参数传递给post
内部callRest
调用。
PS:有效载荷可能有很多这样的变量。我宁愿不把它限制在数据和报头中。
答案 0 :(得分:2)
使用destructuring在通过调用时声明参数和spread运算符:
function callRest(url: string, ...payload: any[]) {
this.$httpservice.post(url, ...payload);
}
请注意,您需要将有效负载设置为最后一个参数而不是最初的参数。
答案 1 :(得分:0)
您需要将有效负载作为可选参数,该参数的类型应为[]。
e.g。
function callRest(url: string, ...payload: any[]) {
if ( payload.length == 1) {
this.$httpservice.post(url, payload[0]);
} else if (payload.length == 2) {
this.$httpservice.post(url, payload[0], payload[1]);
}
}
如果可以根据需要增加陈述。
第二种方法: -
function callRest(url: string, data: string, payload?: angular.IRequestShortcutConfig ) {
this.$httpService.post(url, data, payload);
}
看看它是否有帮助。
有关详细信息,请参阅Variable arguments in typescript
此致
的Ajay