【问题标题】:Typescript writing a callable object打字稿编写可调用对象
【发布时间】:2015-06-11 09:43:48
【问题描述】:

我想用打字稿写一个可调用的函数。

预期的 Javascript:-

app.factory('customLoader', function ($http, $q) {
    return function (options) {
        var deferred = $q.defer();
        var data = {
            'TEXT': 'Fooooo'
        };
        return deferred.resolve(data);
    };
});

我的打字稿解决方案。

    export interface LoadContent {
        (options:any):ng.IPromise<any>;
    }

    export function LoaderService($q:ng.IQService):LoadContent {
        return (options:any) => {
            var deferred = $q.defer();
            var data = {
                'TEXT': 'Fooooo'
            };
            deferred.resolve(data);
            return deferred.promise;
        }
    }
app.factory('customLoader', LoaderService);

我打算使用 angular.factory 来初始化它。如果我需要在 angular.service 中做同样的事情,我该怎么做?

还有没有更好的方法来使用 typescript 类来编写这个?

【问题讨论】:

    标签: javascript angularjs typescript factory


    【解决方案1】:

    如果我需要在 angular.service 中做同样的事情,我该怎么做?

    只使用一个类

    export class LoaderService {
        constructor(public $q:ng.IQService){        }
        getOptions(options:any) {
            var deferred = this.$q.defer();
            var data = {
                'TEXT': 'Fooooo'
            };
            deferred.resolve(data);
            return deferred.promise;
        }
    }
    app.service('customLoader', LoaderService);
    

    有关此模式的更多信息:https://www.youtube.com/watch?v=Yis8m3BdnEM

    【讨论】:

    • 但是getOptions是LoaderService上的一个成员函数。在我的示例中,我将其作为匿名函数返回。我这样做的原因是第三方库'angular-translate'只是将此服务作为依赖项并调用此匿名函数。这是此库的文档angular-translate.github.io/docs/#/guide/13_custom-loaders。我怎样才能使用类做类似的事情?
    猜你喜欢
    • 2019-03-14
    • 2018-09-18
    • 2023-03-07
    • 1970-01-01
    • 2017-10-12
    • 2018-05-26
    • 1970-01-01
    • 2019-09-30
    • 2019-06-30
    相关资源
    最近更新 更多