Angularjs 如何在Typescript中实现$http?
在Typescript中定义$http调用时遇到问题。以前我使用的是.success和.error,如下所示:Angularjs 如何在Typescript中实现$http?,angularjs,typescript,Angularjs,Typescript,在Typescript中定义$http调用时遇到问题。以前我使用的是.success和.error,如下所示: this.$http({ method: "GET", url: self.ac.dataServer + url }) .success((data: any, status: number, headers: (headerName: string) => string, config:
this.$http({
method: "GET",
url: self.ac.dataServer + url
})
.success((data: any, status: number, headers: (headerName: string) => string, config: ng.IRequestConfig): void => {
self.topics = angular.copy(data);
self.topicsBase = angular.copy(data);
this.$state.transitionTo('home.subjects.subject.admin.topics', {
subjectId: this.sus.subject.id
});
})
.error((data, status, headers, config): void => {
self.topics = null;
self.topicsBase = null;
})
.finally((): void => {
});
现在我改为使用。然后:
this.$http({
method: "GET",
url: self.ac.dataServer + url
})
.then(
(response): any => {
self.topics = angular.copy(response.data);
self.topicsBase = angular.copy(response.data);
this.$state.transitionTo('home.subjects.subject.admin.topics', {
subjectId: this.sus.subject.id
});},
(response): any => {
self.topics = null;
self.topicsBase = null;
}
);
但这给了我以下错误:
严重性代码说明项目文件行
错误TS2322类型“{}”不能分配给类型“ITopic[]”。
类型“{}”中缺少属性“length”。管理员C:\H\admin\admin\app\services\topicservice.ts 214
严重性代码说明项目文件行错误TS2322类型“{}”为
不可分配给类型
“ITopic[]”。管理员C:\H\admin\admin\app\services\topicservice.ts 215
错误出现在我为self.topics和self.topicsBase分配angular.copy(数据)的行上
'类型的参数(数据:IHttpPromiseCallbackArg,状态:any,头:any,配置:any)=>any'
不可分配给'类型的参数(响应:IHttpPromiseCallbackArg)=>any'
您正在传递一个函数,该函数接受的参数多于$http()
返回的参数
固定的:
谢谢你的帮助。很抱歉,我在发布问题后意识到了这一点,并在您输入答案时尝试了快速编辑。现在我解决了这个问题,但我有另一个问题。返回的数据过去有一种类型:any,因此它非常适合self.topics和self.topicsBase。你能给我一个建议我现在如何解决这个问题。
你能给我一个建议我现在如何解决这个问题。
指定通用。。。但是如果你不介意的话,不妨在响应上加一个put注释,你能给我举个例子说明你的意思吗?您是否建议在angular.copy之前添加?还有,我如何在响应上做注释,这是我真正困惑的问题。非常感谢还有,我怎么能用响应上的注释来实现这一点,这是我真正困惑的:例如:。然后((响应:ng.ihttpromisecallbackarg):any=>{},():any=>{})代码>我在使用回调参数时遇到了一些困难,但据我所见,您正确地回答了这个问题。我将提出另一个更具体的问题。谢谢
$http({
method: "GET",
url: myURL
})
.then((response): any => { },(): any => {});