typescript - Axios、Typescript 和 Promises

标签 typescript vue.js axios

这可能更像是一个 TypeScript 问题。我有一个由 Vue 操作在我的 http 库中调用的 REST 方法。我希望 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

最佳答案

您应该声明方法的返回类型。

例如:

getApps (): Promise<DomainAppType[]> {
    return new Promise((resolve, reject) => {...});
}

不幸的是,编译器没有将正在解析的内容作为预期的泛型类型。

关于typescript - Axios、Typescript 和 Promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46258969/

相关文章:

javascript - 如何在返回值之前完全解析 axios/fetch 调用/promise?

javascript - Css 和 Javascript 在组件 Angular 6 中不起作用

Angular 路由 "opens"新页面在前一个页面之上,并在每个路由操作中保持堆叠

javascript - Vueify 上的 Vuejs 递归组件

javascript - Vue JS - 将 Json 放在数据上

reactjs - 如何在get请求期间显示axios的进度(不是下载或上传)

javascript - react 和 Redux : Dispatching all actions within one function

typescript - @typescript-eslint/命名约定 : How to mix error and warn rules?

javascript - ESLint 错误 - ESLint 找不到配置 "react-app"

vue.js - 将 v-for 与 v-on 一起使用 :click in a Vue Component