在Typescript中定义函数类型,函数接口

时间:2018-05-15 07:33:11

标签: typescript types

是否可以在typescript中定义一个函数接口?

例如,当我们有诸如

之类的东西时
meth (a : {b: B, c: C}) : {b: B, c: C} {...}

我们可以写

interface A {
    b : B;
    c : C;
}
meth (a : A) : A {...}

然而,当我们有类似

的东西时
meth (a : (b: B) => C) : (b: B) => C {...}

我们可以做类似的事情,比如定义一个函数类型,以便我们可以编写

meth (a : A) : A {...}

再次?

1 个答案:

答案 0 :(得分:1)

接口支持呼叫签名。实际上,您使用的语法可以看作更详细的完整语法的简写:

interface A 
{
    (b: B) : C
}
function meth (a : A) : A { return a; }

接口语法还具有支持函数的多个重载的优点:

interface A {
    (b: B): D
    (d: D, b: B): C
}
function meth(a: A) : void
{
    a(new B()); // Call overload with one argument
    a(new D(), new B()); // Call overload with two arguments 
}

meth((b: B | D, d?: D|B) => new D());