Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
Javascript TypeScript:如何从函数类型中获取大量参数_Javascript_Typescript - Fatal编程技术网

Javascript TypeScript:如何从函数类型中获取大量参数

Javascript TypeScript:如何从函数类型中获取大量参数,javascript,typescript,Javascript,Typescript,有什么好方法可以从函数类型中获取大量参数吗 例如,我有两个回调函数作为函数类型和一个setter函数。我想从函数类型中获取一些参数,并用它替换幻数(2,3) 使用length属性 let x = function (a,b){} function bar (a,b){} console.log(x.length, bar.length); // 2,2 更多 这对我很有用。如果函数类型的定义发生更改,则在伪函数定义处编译失败。这比上面的神奇数字要安全得多 type Callback1 = (

有什么好方法可以从函数类型中获取大量参数吗

例如,我有两个回调函数作为函数类型和一个setter函数。我想从函数类型中获取一些参数,并用它替换幻数(2,3)


使用
length
属性

let x = function (a,b){}
function bar (a,b){}
console.log(x.length, bar.length); // 2,2 
更多
这对我很有用。如果函数类型的定义发生更改,则在伪函数定义处编译失败。这比上面的神奇数字要安全得多

type Callback1 = (a: number, b: string) => void;
type Callback2 = (a: number, b: string, b: boolean) => void;

private readonly dummyCallback1: Callback1 = (a: number, b: string) => {};
private readonly dummyCallback2: Callback2 = (a: number, b: string, b: boolean) => {};

setCallback(callback: Callback1 | Callback2): void {
    if (callback.length == this.dummyCallback1.length) {
        this.callback = callback as Callback1;
    } else if (callback.length == this.dummyCallback2.length) {
        this.callback = callback as Callback2;
    }
}

这要简单得多。谢谢@torazaburo

type Callback = (a: number, b: string, c?: boolean) => void;

setCallback(callback: Callback): void {
    this.callback = callback as Callback1;
}


setCallback(0, "a");
setCallback(0, "a", true);

编写类型定义的人编写要检查的代码。这是TypeScript中重载的本质,没有神奇的函数重载。更多:为什么不使用第三个可选参数定义一个
回调
类型?顺便问一下,您打算如何使用
this.callback
?这是网络中间件库的一部分。如果库接收到一个数据包,它将使用该数据包调用回调。您可以通过设置回调来指定要从数据包接收的多个参数。
type Callback = (a: number, b: string, c?: boolean) => void;

setCallback(callback: Callback): void {
    this.callback = callback as Callback1;
}


setCallback(0, "a");
setCallback(0, "a", true);