약속 체인을 async/await으로 리팩터링하려고하지만 Typescript가 입력에 대해 불평하고 있습니다.Typescript가 async/await가 약속에 싸여있는 값을 반환한다고 생각하는 이유는 무엇입니까?
TS2322 : 유형 'IHttpPromiseCallbackArg < IResp은>'
await
정기적 값이 아니라 약속을 돌려 줄 알았는데 ... 'IResp'을 입력 할 양도 할 수 없습니다. 내가 잘못? 그렇다면 원하는 코드를 컴파일 할 수 있도록 입력을 어떻게 할당합니까?.then 콜백의 첫 번째 인수와 동일한 값이 반환 될 것이라고 생각했습니다. 내가 잘못?
오래된 코드 :
handleSubmit(form) {
const params = this.getParams(form);
this.myAsyncRequest(params)
.then((resp:IResp) => this.processResp(resp))
.catch((e:IServerError) => this.handleError(e));
}
원하는 새로운 코드 : 나는 myAsyncRequest
에서 반환 형식을 제거하면 원하는 코드는 여전히 나누기
async handleSubmit(form) {
const params = this.getParams(form);
try {
const resp:IResp = await this.myAsyncRequest(params); //typing error with "const resp:IResp"
this.processResp(resp);
} catch (e:IServerError) {
this.handleError(e);
}
}
; Typescript는 AngularJS 라이브러리에서 직접 추측합니다. 나는 CONST RESP 선언에서 "IResp"를 제거하면
myAsyncRequest(params:IParams):IHttpPromise<IResp> {
return $http.post('blah', data);
}
, processResponse는 ... IHttp < IResp이> 같지 IResp을한다는 것을
processResp(resp:IResp) {
//do stuff
}
최소한의 완전한 예제를 제공해주십시오. – NineBerry
IHttpPromiseCallbackArg 유형은 약속이 아닙니다. 이것은 이미 함수 호출의 실제 결과입니다. http://definitelytyped.org/docs/angular-translate--angular-translate/interfaces/ng.ihttppromisecallbackarg.html – NineBerry
을 참조하십시오. 제 질문에 대한 단어를 다시 말할 수 있습니다. "나는''''await''이 첫 번째 인수와 같은 값을 반환 할 것이라고 생각했습니다. '.then' 콜백에서. 나는 틀린가? " – user2954463