У меня есть функция util, которая извлекает список ресурсов в конечной точке. Я хотел правильно ввести эту функцию.
type item = {
id: number
name: string
}
export default function fetchItems(): Promise<item[]> {
return fetch(ENDPOINT).then(async (response) => {
if (response.ok) {
const json = await response.json()
return json
} else {
return Promise.reject(new Error('Unknown Error'))
}
})
}
Прямо сейчас для этой функции нет ошибок типа, но мне интересно, если для возвращаемого типа, т.е.
Promise<item[]>
Я должен добавить тип объединения, который также содержит ошибку, так как он может отклонить с этими ошибками, что-то вроде Promise<item[] | Error>
или текущая версия в порядке?
TypeScript не отслеживает типы по возможным причинам отклонения промисов. (Точно так же TypeScript не отслеживает типы для обычных синхронных ошибок try
/catch
). Если у вас есть обещание в TypeScript, все, что вы можете сделать, это указать тип значения разрешения; значение отклонения не является (и не может) вводиться.
Например:
const prom = Promise.reject('foo');
дает тип Promise<never>
.
Ваша текущая реализация в порядке; 'Unknown Error'
в отклонении никуда не уходит в системе типов, что касается TS.