Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用具有可选参数的TypeScript方法?_Typescript_Optional Parameters - Fatal编程技术网

如何调用具有可选参数的TypeScript方法?

如何调用具有可选参数的TypeScript方法?,typescript,optional-parameters,Typescript,Optional Parameters,VSCode类有两种方法,如下所示: translate(lineDelta?: number, characterDelta?: number): Position translate(change: {characterDelta: number, lineDelta: number}): Position 我想称之为只提供一个characterDelta。我试着这样做: let endPos = startPos.translate(characterDelta: error.locat

VSCode类有两种方法,如下所示:

translate(lineDelta?: number, characterDelta?: number): Position
translate(change: {characterDelta: number, lineDelta: number}): Position
我想称之为只提供一个characterDelta。我试着这样做:

let endPos = startPos.translate(characterDelta: error.location.length);
但是我得到了这个错误:

Cannot find name 'characterDelta'.

我认为第一个重载的参数上的
的用途意味着它们是可选的,我可以只提供我需要的参数。不是这样吗?

调用方法时,您不需要命名参数,但根据签名,您还需要提供第一个可选参数,因此它应该类似于:

let lineDelta: number = ...
let endPos = startPos.translate(lineDelta, error.location.length);
或:

可选参数可能是可选的,但如果要传递第二个可选参数,则还需要传递第一个。
因此,这些是有效的(根据签名):


调用方法时,您不命名参数,但根据签名,您还需要提供第一个可选参数,因此它应该类似于:

let lineDelta: number = ...
let endPos = startPos.translate(lineDelta, error.location.length);
或:

可选参数可能是可选的,但如果要传递第二个可选参数,则还需要传递第一个。
因此,这些是有效的(根据签名):


它需要具有characterDeltalineDelta属性的对象

let endPos = startPos.translate({characterDelta: error.location.length, lineDelta: 5});

它需要具有characterDeltalineDelta属性的对象

let endPos = startPos.translate({characterDelta: error.location.length, lineDelta: 5});

第二个重载可以,但我尝试使用第一个(
translate(lineDelta?:number,characterDelta?:number):Position
)第二个重载可以,但我尝试使用第一个(
translate(lineDelta?:number,characterDelta?:number):Position
),因此在本例中,将第一个参数标记为可选参数有什么意义?(调用translate方法不进行翻译是毫无意义的,甚至记录为只返回
this
):-/好问题,我不知道,也许是谁设计了这个api,认为可能有一些场景是方便的。那么在这种情况下,将第一个参数标记为可选参数有什么意义?(调用translate方法不进行翻译是毫无意义的,甚至记录为只返回
this
):-/好问题,我不知道,也许设计这个api的人认为可能有一些场景是方便的。