gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:11:05 24 4
gpt4 key购买 nike

我的代码如下所示:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com