如何不必“定义”可选方法参数?

时间:2019-03-29 20:43:56

标签: typescript

我读到我们可以创建可选的方法参数,但是当调用具有可选参数的方法时,您仍然必须用undefined填充它们,这同时又很奇怪而且很无聊。

有什么解决方法吗?

以下是我要执行的操作的示例:

class App {
    constructor(a?:string, b?:string, c?:boolean){}
}

let app:App = new App('a', 'need to fill b to fill c', true)

尝试跳过中间参数时出现错误 Error I get when trying to skip the middle parameter

2 个答案:

答案 0 :(得分:0)

您所描述的似乎不正确。无论如何,重要的规则是:可选参数不能跟在必需参数之后。操作方法如下:

public mymethod(P:number, p1:number = 0):void
{

}

this.mymethod(0);
this.mymethod(0, 1);

答案 1 :(得分:0)

您可以跳过可选参数,只要要跳过的参数位于参数列表的末尾即可。。 TypeScript没有参数标签,因此它必须依靠参数的顺序才能知道哪个是-如果您在中间跳过一个,应该怎么知道呢?

因此,如果您想忽略cbc或什至全部三个的值,就可以了。否则,您将不得不处理它。

另一种选择是传递一个对象作为参数,因为键是标记的,而不是有序的,因此您可以跳过任何想要的操作:

class App {
    constructor(args: {a?:string, b?:string, c?:string}){} 
}

let app:App = new App({a: 'a', c: 'c'})