javascript - 使用 Typescript 我可以以更紧凑的方式创建服务吗?

标签 javascript angularjs typescript

我的代码如下所示:

app.factory('utilityService', [
    '$http',
    '$angularCacheFactory',
    utilityService
]);

function utilityService(
    $http,
    $angularCacheFactory
    ) {

    var factory: {
        rowClicked($index, collection);
    } = <any>{};

    factory.rowClicked = function ($index, collection) {
        var row = collection[$index];
        if (row.current) {
            row.current = false;
            return null;
        } else {
            collection.forEach(function (object) {
                object.current = false;
            });
            row.current = true;
            return $index;
        }
    };

    return factory;

}

有没有办法可以将定义和代码结合起来,如下所示:

    var factory2: {

        rowClicked: ($index, collection) => { ... };

    }

    return factory2;

请注意,我确实尝试了上面的代码,但我认为我没有走上正确的道路,因为我看到了许多与 typescript 相关的错误。

最佳答案

您可以为您的服务定义一个接口(interface),并将其保留在您的服务外部。所以你可以将其总结为:-

export interface IUtilityService {

    /**
     * Returns ...
     * @param {number} $index - ...
     * @param {SomeType[]} collection:SomeType - ...
     * @returns {SomeType}
     */
    rowClicked($index:number, collection:SomeType[]):number
}




Class UtilityService implements IUtilityService {

     static $inject = [
            '$http',
            '$angularCacheFactory'
        ];


        constructor(private $http : ng.IHttpService,
             private $angularCacheFactory  :ng.ICacheFactoryService) {
        }



    rowClicked($index, collection) {
        var row = collection[$index];
        if (row.current) {
            row.current = false;
            return null;
        } else {
            collection.forEach(function (object) {
                object.current = false;
            });
            row.current = true;
            return $index;
        }
    };

}


app.service('utilityService',UtilityService);

当您使用它时,您可以将依赖项的类型指定为 IUtilityService

关于javascript - 使用 Typescript 我可以以更紧凑的方式创建服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961938/

相关文章:

javascript - 在 Javascript 中获取原始函数

javascript - 从浏览器扩展调用网页 JavaScript 方法

javascript - 强制函数仅接受特定结构的对象(在 typescript/js 中)

javascript - 在 Angular 模板中处理可变 JSON 响应

javascript - 在创建循环的 angularjs 指令中重置范围间隔

typescript 无法使用定义为 T 类型键子集的键来索引类型 T

javascript - ASP.NET 中多个 JavaScript block 的性能影响?

angularjs - 具有相同父级的 Angular 多个指令元素

javascript - 如何通过Angular2中的链接发送基于视频上传的放置请求

javascript - 提供给依赖于从服务器返回的值的组件