Axios、Typescript 和 Promises
Axios, Typescript, and Promises
这可能更像是一个 TypeScript 问题。我有一个由 Vue 操作在我的 http 库中调用的 REST 方法。我想要 return 类型化数组的 resolve() 方法,但除非我在 action.ts "then" 方法中进行转换,否则我会收到 '.length does not exist in type {}'
有没有什么方法可以不必将结果重新转换为我的类型数组,因为它已经在 http.ts 方法中完成了?
http.ts(部分)
getapps() {
return new Promise((resolve, reject) => {
this.axios.post('/account/getapps').then((response) => {
resolve(response.data as DomainAppType[]);
}, (err) => {
reject(err);
});
});
}
action.ts
import { DomainAppType } from '../models/domainApps';
var actions = {
LOGIN: function ({ commit }, params) {
http.getapps(params.email, params.password).then(apps => {
var appList = <DomainAppType[]>apps;
console.log(appList.length);
}).catch((err) => {
console.log(JSON.stringify(err));
})
}
}
export default actions
您应该声明方法的 return 类型。
例如:
getApps (): Promise<DomainAppType[]> {
return new Promise((resolve, reject) => {...});
}
不幸的是,编译器没有将正在解析的内容作为预期的泛型类型。
这可能更像是一个 TypeScript 问题。我有一个由 Vue 操作在我的 http 库中调用的 REST 方法。我想要 return 类型化数组的 resolve() 方法,但除非我在 action.ts "then" 方法中进行转换,否则我会收到 '.length does not exist in type {}'
有没有什么方法可以不必将结果重新转换为我的类型数组,因为它已经在 http.ts 方法中完成了?
http.ts(部分)
getapps() {
return new Promise((resolve, reject) => {
this.axios.post('/account/getapps').then((response) => {
resolve(response.data as DomainAppType[]);
}, (err) => {
reject(err);
});
});
}
action.ts
import { DomainAppType } from '../models/domainApps';
var actions = {
LOGIN: function ({ commit }, params) {
http.getapps(params.email, params.password).then(apps => {
var appList = <DomainAppType[]>apps;
console.log(appList.length);
}).catch((err) => {
console.log(JSON.stringify(err));
})
}
}
export default actions
您应该声明方法的 return 类型。
例如:
getApps (): Promise<DomainAppType[]> {
return new Promise((resolve, reject) => {...});
}
不幸的是,编译器没有将正在解析的内容作为预期的泛型类型。