当前位置:  开发笔记 > 编程语言 > 正文

打字稿和传播操作符?

如何解决《打字稿和传播操作符?》经验,为你挑选了2个好方法。

所以你可能错过了一个小句:

类型检查需要扩展元素以与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



1> Fenton..:

所以你可能错过了一个小句:

类型检查需要扩展元素以与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);



2> Ogglas..:

我认为@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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有