У меня есть 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
Где и как вы определяя '$ q'? –
@JamesMonger https://github.com/a-lucas/angular.js-server-bower – Ant