【问题标题】:TYpescript : Static methods on Function as class类型脚本:作为类的函数的静态方法
【发布时间】:2016-09-27 06:30:34
【问题描述】:

我有一个fn,它继承了一个现有的fn(以Angular1 $q 为例)

//$q original behavior
var defer = $q.defer();
defer.promise.then(function(result){})
//or
$q( (resolve, reject) => {
   //promise execution here
}).then(function(result){});

如果我想装饰它,我会这样做:

var Qdecorator = function($delegate) {

     var Q = function(resolver:any): any {
       //do some extra stuff here
       return $delegate.apply($delegate, arguments);
     }

     //Assign the static methods here: 

     Q.defer = function() {
        //do some stuff 
        return $delegate.defer.apply($delegate, []);
     }
     //same goes for race, when, resole reject and so on
     return Q;
}

问题是打字稿抱怨 属性defer,race, when, resolve, etc...does not exist on type '(resolver: any) => any'

我尝试使用IQServiceIPromise,但没有成功,顺便说一句,我想提出一个更全球性的问题:

如何在不使用 new 的情况下在 function() 上定义返回对象的后期静态方法

【问题讨论】:

标签: class typescript static static-methods late-binding


【解决方案1】:

我正在从这个链接复制粘贴我的问题的答案: https://www.typescriptlang.org/docs/handbook/interfaces.html

interface Counter {
  (start: number): string;
  interval: number;
  reset(): void;
}

function getCounter(): Counter {
  let counter = <Counter>function (start: number) { };
  counter.interval = 123;
  counter.reset = function () { };
  return counter;
}

let c = getCounter();
c(10);
c.reset();
c.interval = 5.0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2016-04-22
    • 1970-01-01
    相关资源
    最近更新 更多