打字稿:在功能静态方法为类

打字稿:在功能静态方法为类

问题描述:

我有一个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; 
} 

问题是,打字稿抱怨 物业deferrace, when, resolve, etc...does not exist on type '(resolver: any) => any'

我试图用IQService,并IPromise没有运气,BTU我想提出一个更具全球性的问题:

如何定义的函数),而不使用new

返回一个对象后期静态方法(
+0

在哪里,你是如何定义'$ q'? –

+0

@JamesMonger https://github.com/a-lucas/angular.js-server-bower – Ant

我复制此链接粘贴回答我的问题: 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;