2017-09-16 2 views
2

이것은 TypeScript 관련 질문 일 수 있습니다. Vue 작업에 의해 내 http 라이브러리 내에서 호출되는 REST 메서드가 있습니다. 형식화 된 배열을 반환하려면 resolve() 메서드를 원하지만 action.ts "then"메서드 내에서 변환을 수행하지 않으면 '.length가 형식 {}에 없습니다.'Axios, Typescript 및 Promotes

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