【问题标题】:passing an array of arrow functions传递箭头函数数组
【发布时间】:2015-01-25 04:49:14
【问题描述】:

我需要一个这样的箭头函数数组

//how can we contain the list of tasks?
private _tasks : ((x: T) => boolean)[];

constructor(...tasks : ((x: T) => boolean)[]) {
    this._tasks = tasks;
}

有什么办法可以做到吗?

【问题讨论】:

    标签: arrays typescript arrow-functions


    【解决方案1】:

    对于内联声明,您的括号错误。使用{ 而不是(

    class Foo<T>{
        private _tasks: { ( x: T ): boolean }[];
    
        constructor( ...tasks: { ( x: T ): boolean }[] ) {
            this._tasks = tasks;
        }
    }
    

    正如史蒂夫芬顿所说,我会使用一个界面来删除重复。

    【讨论】:

      【解决方案2】:

      这似乎对我有用

      private _tasks :Array<(x: T) => boolean>;
      

      【讨论】:

      • 在 TypeScript 1.4 中,您将能够使用带括号的语法,或为其创建类型别名。但在那之前,你的选择是唯一可能的方法,是的。或者你可以创建一个只有一个调用签名的接口,它在结构上与你的签名相同。
      • 我要补充一点,T[] 被定义为与Array&lt;T&gt; 相同,所以这里没有精度损失;在大多数情况下,这是最易读的解决方法(我个人讨厌单重载类型文字!)
      【解决方案3】:

      您可以使用接口使类型更具可读性:

      interface Task<T> {
          (x: T) : boolean;
      }
      
      function example<T>(...tasks: Task<T>[]) {
      
      }
      
      example(
          (str: string) => true,
          (str: string) => false  
      );
      

      【讨论】:

        猜你喜欢
        • 2018-06-26
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 2018-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-21
        相关资源
        最近更新 更多