2017-09-16 148 views
2

這可能更像是一個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 

回答

2

你應該聲明的方法的返回類型。

例如爲:

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

什麼正在解決沒有得到回升的預期泛型類型由編譯器,很遺憾。

+0

非常完美,非常感謝。我真的沒有想到需要在TS中設置返回類型,而是在考慮在該操作中投入返回類型,但顯然這要好得多。再次感謝! – Feech