【问题标题】:Define Method Signature that takes a function as parameter定义将函数作为参数的方法签名
【发布时间】:2018-07-24 21:48:12
【问题描述】:

我想声明这个函数遵循的类型定义:

var a : MyInterface = function(func : <T>(t: T) => number) {
  console.log("do Nothing");
  return func(123) + " someString";
}

我正在尝试构建一个接口,该接口采用 一个函数 f 返回一个数字作为参数并返回一个字符串本身。据我了解,界面应该是这样的。

interface MyInterface {

    (func: (<T>(t: T) => number)) => string;
}

但它不起作用,抱怨最后的'=>',说':' expected

如果我只是省略返回类型“字符串”,编译器会很高兴。我该怎么办?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    在接口中,可调用签名的返回类型使用: 而不是=&gt;。所以在你的情况下,它会是

    interface MyInterface {
        (func: (<T>(t: T) => number)): string;
    }
    

    但如果您只想声明一个函数类型,则使用同样使用=&gt; 的速记语法会更直接。

    type MyFunction = (func: (<T>(t: T) => number)) => string
    

    前一种语法的优点是它允许您定义重载签名和混合类型,这些类型不仅可调用而且具有属性。

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2019-03-31
      • 2020-09-13
      • 2013-09-11
      • 2016-08-26
      相关资源
      最近更新 更多