如何调用这个具有可选参数的 TypeScript 方法?
How do I call this TypeScript method that has an optional argument?
VSCode Position class 有两种方法,如下所示:
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 characterDelta: number = ...
let endPos = startPos.translate({
characterDelta: characterDelta,
lineDelta : error.location.length
});
可选参数可能是可选的,但如果要传递第二个可选参数,则还需要传递第一个参数。
所以这些都是有效的(根据签名):
startPos.translate();
startPos.translate(lineDelta);
startPos.translate(lineDelta, characterDelta);
它需要一个具有 characterDelta 和 lineDelta 属性的对象。
let endPos = startPos.translate({characterDelta: error.location.length, lineDelta: 5});
VSCode Position class 有两种方法,如下所示:
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 characterDelta: number = ...
let endPos = startPos.translate({
characterDelta: characterDelta,
lineDelta : error.location.length
});
可选参数可能是可选的,但如果要传递第二个可选参数,则还需要传递第一个参数。
所以这些都是有效的(根据签名):
startPos.translate();
startPos.translate(lineDelta);
startPos.translate(lineDelta, characterDelta);
它需要一个具有 characterDelta 和 lineDelta 属性的对象。
let endPos = startPos.translate({characterDelta: error.location.length, lineDelta: 5});