【问题标题】:Naming function types命名函数类型
【发布时间】:2012-11-05 00:17:19
【问题描述】:

是否有与 C# 的 Func 关键字等效的 TypeScript?

在今天对 TypeScript 转换一些现有代码的初步探索中,我使用了类/对象的接口,但发现自己不必要地复制了函数类型。我错过了什么吗?

在下文中,我为对象类型 (Data) 定义了一个接口,并将受益于命名 (data: Data) => void too

interface Funcs {
    box: (data: Data) => void;
    lbl: (data: Data) => void;
}

谢谢!

【问题讨论】:

    标签: typescript


    【解决方案1】:

    函数类型(args) => t 只是对象类型{(args): t} 的缩写,因此应该可以使用以下方法:

    interface Func {
      (data: Data): void;
    }
    
    interface Funcs {
      box: Func;
      lbl: Func;
    }
    

    【讨论】:

      【解决方案2】:

      在 C# 中,Func 采用泛型类型参数。泛型还不是 TypeScript 语言规范的一部分 - 但它们已列在路线图上。

      说了这么多,我不知道你打算如何在这种情况下使用它 - 你是在追求这个吗?

      伪代码:

      interface Funcs {
          box: Action<Data>;
          lbl: Action<Data>;
      }
      

      为了使您的定义更短(即我接受 Data 类型的参数并返回 void)。我使用了Action,因为没有返回值,但你可以在这里同样考虑Func&lt;Data, ResultType&gt;

      无论如何,我们将不得不等待泛型,看看它们是如何实现的,以及它们是否允许这种使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-08
        • 2016-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 2016-01-04
        • 1970-01-01
        相关资源
        最近更新 更多