Axios、Typescript 和 Promise
Posted
技术标签:
【中文标题】Axios、Typescript 和 Promise【英文标题】:Axios, Typescript, and Promises 【发布时间】:2018-02-25 18:59:10 【问题描述】:这可能更像是一个 TypeScript 问题。我有一个 REST 方法,它通过 Vue 操作在我的 http 库中调用。我希望 resolve() 方法返回类型化数组,但除非我在 action.ts“then”方法中进行转换,否则我会收到一个 '.length 在类型 中不存在'
由于已经在 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
【问题讨论】:
【参考方案1】:你应该声明方法的返回类型。
例如:
getApps (): Promise<DomainAppType[]>
return new Promise((resolve, reject) => ...);
不幸的是,正在解析的内容没有被编译器作为预期的泛型类型。
【讨论】:
太完美了,非常感谢。老实说,我什至没有想过需要在 TS 中设置返回类型,而是考虑在动作中转换返回类型,但这显然要好得多。再次感谢!以上是关于Axios、Typescript 和 Promise的主要内容,如果未能解决你的问题,请参考以下文章
Axios 和 Typescript 给出一个类型的 promise 拒绝错误
React 和 Typescript,Axios 响应的类型都有哪些?