Понавертели лишнего.
Во-первых: есть хэлперы
Promise.reslove(data)
и
Promise.reject(error)
, а во-вторых: при возврате из
then
\
catch
даже они не нужны.
interface ResponseData {
status: boolean;
data?: object;
}
function sendQuery(url: string, data: object): Promise<ResponseData> {
return fetch(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(data)
}).then(response =>
response.json()
).then(data => ({
status: true,
data: data
})).catch(() => {
throw {
status: false
}
});
}
Хотя ваш вариант НЕ неправильный, просто бессмысленно перегруженный, проблема в том, что TS, увы, не может автоматически вывести тип конструкции
new Promise
, а потому выдаёт
Promise<unknown>
. Т.е. каждый раз, когда вы используете
new Promise
- надо использовать его с дженериком:
new Promise<Type>
.