TypeScript类,也充当函数类型

时间:2015-03-28 03:58:52

标签: angularjs function class typescript

在尝试实现angular的IHttpService时,我不确定如何处理以下函数。

interface IHttpService {
    <T>(config: IRequestConfig): IHttpPromise<T>;
}

class MyHttpService implements IHttpService
{
    // The following does not work
    <T>(config: IRequestConfig): IHttpPromise<T> 
    {
    }
}

这甚至可能吗?

2 个答案:

答案 0 :(得分:2)

使用 TypeScript 类无法做到这一点。您需要回到使用简单的功能。

并非每个可以在TypeScript中定义的接口都可以使用TypeScript类实现。这是其中一个案例。

答案 1 :(得分:0)

basarat是正确的,你应该使用常规函数来实现IHttpService接口。

为了将来参考,下面是实现该接口并在Angular中使用它的方法之一:

interface IRequestConfig {}
interface IHttpPromise<T> {
    then: (resolve?: (value: T) => any, reject?) => IHttpPromise<T>;
}

interface IHttpService {
    <T>(config: IRequestConfig): IHttpPromise<T>;
}


function MyHttpService<T>(config: IRequestConfig): IHttpPromise<T>{
    // Define service behaviour here.
}


angular.module('MyModule')
    .service('MyHttpService', MyHttpService)
    .controller('MyController', function(MyHttpService: IHttpService){

        MyHttpService<MyType>({
            // Implement `IRequestConfig` here. 
        }).then(function(value){
            // Accces properties on `value`.
        });

    });