Я делаю простую выборку, используя Typescript в классе, который должен вернуть обещание, затем я хочу получить ответ JSON из этой выборки.Однако, независимо от того, какое изменение я внесу, функция всегда возвращает Promise<void | T>
, что разрушает проверку типов в моем коде.
export class ApiHelper {
constructor() { }
public FetchFromPortal<T>(xyz: string) {
------ Other less relevant code -----------
return fetch(url, options)
.then((response) => this.CheckStatus(response))
.then((response) => this.ParseJSON<T>(response))
.then((response) => {
console.log(response);
return response;
})
.catch((error: Error) => { console.log(error) });
}
private CheckStatus(response : Response) : Promise<Response> {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response);
} else {
let error = new Error(response.statusText);
throw error;
}
}
private ParseJSON<T>(response : Response) {
return response.json() as Promise<T>;
}
}
Затем я впоследствии называю это так:
let result = apiHelper.FetchFromPortal<T>(xyz);
Согласно Typescript, это возвращает Promise<void | T>
.Я попытался разрешить обещание в вызове следующим образом:
let result = apiHelper.FetchFromPortal<T>(xyz).then(data => { return data });
Что теоретически должно разрешить Promise
, но, похоже, это не работает.
Есть ли причина, по которой обещание не сводится только к объекту?