我有这个功能:
getTopics = (params) => {
var defer = this.$q.defer();
this.$http({
cache: this.utilityService.oyc,
url: '/api/Topic/GetMapData' + params,
method: "GET"
})
.success(function (data: { topicId: number; subTopicId: number; topicName: string; subTopicName; string; }[] ) {
var output = {
data: _.chain(data)
.uniq(true, 'topicId')
.map(function (t) { return { id: t.topicId, name: t.topicName }; })
.value(),
dataMap: _.reduce(data, function (rv, v) {
rv[v.subTopicId] = v;
return rv;
}, {}),
topicNameMap: _.reduce(data, function (rv, v) {
rv[v.topicId] = v.topicName;
return rv;
}, {}),
dataPlus:
[{ id: 0, name: '*' }].concat(
_.chain(data)
.uniq(true, 'topicId')
.map(function (t) { return { id: t.topicId, name: t.topicName }; })
.value())
};
defer.resolve(output);
})
.error(function () {
defer.reject();
});
return defer.promise;
};
当我将鼠标悬停在该功能上时,它会向我显示它返回ng.IPromise< {}>
有人可以给我一些建议,告诉我如何向返回的对象添加更多信息。我并不是在寻找一个完整的解决方案,但我会欣赏一些关于如何定义输出的提示,例如{ data: }
答案 0 :(得分:2)
ng.IPromise<T>
是通用的,因此返回类型可以是ng.IPromise<IAnything>
因此,您可以输出IAnything
类型的输出:
var output = <IAnything>{
...
};
并将getTopics
函数返回值定义为ng.IPromise<IAnything>
你也可以这样创建你的延迟对象:
var defer = this.$q.defer<IAnything>();