【问题标题】:Typescript infer return type from passed functions return typeTypescript 从传递的函数返回类型推断返回类型
【发布时间】:2017-01-06 15:42:42
【问题描述】:

我可能正在努力实现不可能的目标,但这里就是这样。

我想定义一个函数(函数 A),它将返回与传递给函数 A 参数的新函数相同的类型。

例如

export function test<T> ( arg:Function ):T {
    return arg;
}

function a():string {
    return 'a';
}

function b():number {
    return 0;
}

let aVal:string = test(a);
let bVal:number = test(b);

显然,这将允许我针对某些编译时错误强烈键入我的响应。

有没有人有任何想法或知道我是否只是在做梦。

** 注意:代码拼在一起进行演示 **

干杯

【问题讨论】:

    标签: function generics typescript


    【解决方案1】:

    这个怎么样?

    function test<T>(arg: () => T): T {
        return arg();
    }
    
    function a(): string {
        return 'a';
    }
    
    function b(): number {
        return 0;
    }
    
    let aVal: string = test(a);
    let bVal: number = test(b);
    

    我们没有使用 Function 接口,而是将 arg 定义为一个不带参数并返回 T 类型的函数。实际的 T 类型可以由传入的函数定义。

    【讨论】:

    • 这太棒了我不知道你可以在不定义函数本身的情况下定义这样的函数签名。谢谢
    • 好吧..我们在那里定义的是一个函数参数,它应该是一个不带参数并返回一些东西的函数。就这样。 :)
    • 完全满足我的需要
    猜你喜欢
    • 2021-06-16
    • 2019-09-03
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2019-12-06
    • 2017-10-15
    相关资源
    最近更新 更多