当所有参数都被标记为可选时,类型化的展开运算符才能起作用。
public drawTextTest(p1?: number, p2?: number, p3?: number):void {
请参见https://github.com/Microsoft/TypeScript/issues/4130#issuecomment-303486552
新版本的TypeScript应该通过流分析来解决这个问题,但是您可以通过手动将数组键入以下方式来确保代码正常工作以达到最小长度:
function drawTextTest(p1: number, p2: number, p3: number):void {
console.log(p1, p2, p3);
}
let array: [number, number, number] = [2, 2, 5];
this.drawTextTest( ... array );
如果您使用的是Vscode早于2.1版本的typescript来评估代码,请仔细检查IDE窗口右下角的版本。
如果我错了,我需要看到您的drawInfo对象定义。 我的第二个猜测是drawInfo具有可选属性,评估器看到扩展可能导致0个参数。
编辑:drawInfo似乎是一个数组。因为数组的长度可以更改,且没有保证有3个属性,因此ts评估器会发出警告。
如果drawInfo将始终包含3个值,则可以将其从数组更改为定义的类型,并避免使用扩展运算符。