Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Typescript:如何定义具有特定第一个参数的泛型函数而不丢失函数类型?_Typescript - Fatal编程技术网

Typescript:如何定义具有特定第一个参数的泛型函数而不丢失函数类型?

Typescript:如何定义具有特定第一个参数的泛型函数而不丢失函数类型?,typescript,Typescript,我正在定义一个高阶函数,它接受一组函数,这些函数将被转换为具有一个较少参数的函数(因为我将为第一个参数传递一个值)。我需要以下约束条件: 函数的调用方必须传入一个对象,该对象的属性都是以数字作为第一个参数的函数(任何其他参数都可以是任意值,返回类型可以是任意值) 输出的用户需要使用与调用者的函数签名匹配的参数调用每个函数(但没有第一个参数) 这给了我以下错误: 类型“{}”不可分配给类型“ExpectedOutFns”。 类型“{}”中缺少属性“a” 我也试过,但我不知道如何正确地做 谢谢

我正在定义一个高阶函数,它接受一组函数,这些函数将被转换为具有一个较少参数的函数(因为我将为第一个参数传递一个值)。我需要以下约束条件:

  • 函数的调用方必须传入一个对象,该对象的属性都是以数字作为第一个参数的函数(任何其他参数都可以是任意值,返回类型可以是任意值)
  • 输出的用户需要使用与调用者的函数签名匹配的参数调用每个函数(但没有第一个参数)

这给了我以下错误:

类型“{}”不可分配给类型“ExpectedOutFns”。 类型“{}”中缺少属性“a”

我也试过,但我不知道如何正确地做


谢谢你的帮助

我不认为这是可能的,直到下一个版本(3.0)的TypeScript,其中包括是releasedAh非常感谢!“通用rest参数”看起来正是我所需要的。
class MyFns {
    a(one: number, s: string) {
        return one + s.length;
    }
    b(one: number, n: number, m: number) {
        return one + n + m;
    }
}

interface ExpectedOutFns {
    a(s: string): number;
    b(n: number, m: number): number;
}

function passOne(mapOfFns) {
    const transformedMap = {};
    for (const k in mapOfFns) {
        //any[] is wrong here - not exact enough
        // can I somehow type this based on mapOfFns[k]?
        transformedMap[k] = (...args: any[]) => mapOfFns[k](1, ...args);
    }
    return transformedMap;
}

const out: ExpectedOutFns = passOne(new MyFns()); // Error