【问题标题】:Assigning generics function to delegate in Typescript将泛型函数分配给 Typescript 中的委托
【发布时间】:2017-03-25 17:27:34
【问题描述】:

我无法让这个简单的代码 sn-p 在 Typescript (1.8) 中编译

function test<T>(a: string, input: T): T {
    return input
} 

const xyz: (a: string, b: number) => number = test<number>

我有一个接受委托的函数,但是将泛型函数转换为该委托格式需要我执行以下额外步骤:

const xyz: (a: string, b: number) => number = (a,b) => test<number>(a,b)

...这对我来说似乎并不理想。任何想法为什么这不起作用,或者是否有另一种语法可以完成相同的操作?

【问题讨论】:

    标签: generics typescript delegates


    【解决方案1】:

    你根本不需要通用约束,这样就可以了:

    const xyz: (a: string, b: number) => number = test;
    

    (code in playground)

    编译器根据您为变量显式定义的类型推断通用约束为数字。
    另一种方法是:

    const xyz = test as (a: string, b: number) => number;
    

    (code in playground)

    【讨论】:

    • 你是对的!我仍然觉得在这种情况下你不能使用类型约束有点尴尬。
    • 好吧,编译器不喜欢let a = test&lt;number&gt;的语法,你应该只在调用函数时使用泛型约束。
    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2023-01-26
    相关资源
    最近更新 更多