2017-09-16 11 views
2

これは、TypeScriptの質問のほうが多いかもしれません。私はVueアクションによってhttpライブラリ内で呼び出されるRESTメソッドを持っています。私は解決型()メソッドが型付き配列を返すようにしたいと思いますが、action.ts "then"メソッド内で変換を行わないと、 '.lengthは型{}'に存在しません。Axios、Typescript、Promises

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