【发布时间】: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'
我尝试使用IQService 和IPromise,但没有成功,顺便说一句,我想提出一个更全球性的问题:
如何在不使用 new 的情况下在 function() 上定义返回对象的后期静态方法
【问题讨论】:
-
你在哪里以及如何定义
$q? -
@JamesMonger github.com/a-lucas/angular.js-server-bower
标签: class typescript static static-methods late-binding