所以你可能错过了一个小句:
没有休息参数类型检查需要扩展元素以与rest参数匹配.
但是您可以使用类型断言来动态...它将为您转换回ES5/ES3:
function foo(x:number, y:number, z:number) { console.log(x,y,z); } var args:number[] = [0, 1, 2]; (foo)(...args);
这导致apply
您期望的相同函数调用:
function foo(x, y, z) { console.log(x, y, z); } var args = [0, 1, 2]; foo.apply(void 0, args);使用Rest参数
另一种方法是,如果函数接受rest参数,它都可以正常工作.
function foo(...x: number[]) { console.log(JSON.stringify(x)); } var args:number[] = [0, 1, 2]; foo(...args);
Ogglas.. 6
我认为@Fenton很好地解释了它,但我想补充一些文档和可能的解决方案.
解决方案:
功能过载.在这种情况下,我更喜欢这种解决方案,因为它保持某种类型的安全性并避免忽略和任何.原始方法和函数调用根本不需要重写.
function foo(...args: number[]): void function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; foo(...args);
使用@ts-ignore
忽略特定行,打字稿2.3
function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; // @ts-ignore foo(...args);
像任何一样使用.
function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; (foo as any)(...args);
链接有关传播运营商的文档:
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html
关于这个的讨论:
https://github.com/Microsoft/TypeScript/issues/5296 https://github.com/Microsoft/TypeScript/issues/11780 https://github.com/Microsoft/TypeScript/issues/14981 https:// github .COM /微软/打字稿/问题/ 15375
所以你可能错过了一个小句:
没有休息参数类型检查需要扩展元素以与rest参数匹配.
但是您可以使用类型断言来动态...它将为您转换回ES5/ES3:
function foo(x:number, y:number, z:number) { console.log(x,y,z); } var args:number[] = [0, 1, 2]; (foo)(...args);
这导致apply
您期望的相同函数调用:
function foo(x, y, z) { console.log(x, y, z); } var args = [0, 1, 2]; foo.apply(void 0, args);使用Rest参数
另一种方法是,如果函数接受rest参数,它都可以正常工作.
function foo(...x: number[]) { console.log(JSON.stringify(x)); } var args:number[] = [0, 1, 2]; foo(...args);
我认为@Fenton很好地解释了它,但我想补充一些文档和可能的解决方案.
解决方案:
功能过载.在这种情况下,我更喜欢这种解决方案,因为它保持某种类型的安全性并避免忽略和任何.原始方法和函数调用根本不需要重写.
function foo(...args: number[]): void function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; foo(...args);
使用@ts-ignore
忽略特定行,打字稿2.3
function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; // @ts-ignore foo(...args);
像任何一样使用.
function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; (foo as any)(...args);
链接有关传播运营商的文档:
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html
关于这个的讨论:
https://github.com/Microsoft/TypeScript/issues/5296 https://github.com/Microsoft/TypeScript/issues/11780 https://github.com/Microsoft/TypeScript/issues/14981 https:// github .COM /微软/打字稿/问题/ 15375