Axios,打字稿和承诺

Axios,打字稿和承诺

问题描述:

这可能更像是一个TypeScript问题。我有一个REST方法,通过Vue动作在我的http库中调用。我希望resolve()方法返回类型数组,但除非我在action.ts“then”方法内进行转换,否则我会收到'.length不存在于{}类型中'Axios,打字稿和承诺

Is有没有办法不必将结果重新转换为我的类型数组,因为它已经在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) => {...}); 
} 

什么正在解决没有得到回升的预期泛型类型由编译器,很遗憾。

+0

非常完美,非常感谢。我真的没有想到需要在TS中设置返回类型,而是在考虑在该操作中投入返回类型,但显然这要好得多。再次感谢! – Feech