Почему ошибка при загрузке клиента aurelia указана как любая, а не как Ответ

Я режу зубы на Aurelia, клиенте aurelia-fetch и Typescript. Я замечаю в машинописи, когда я настраиваю функцию catch

.catch(error => //do something error)

error определяется машинопись как any но когда я проверяю это в отладчике, я вижу, что это типа Response

Почему тип any и не Response?

1 ответ

Обратите внимание, что тип возвращаемого значения fetch методHttpClient является Promise<Response>:

fetch(input: Request | string, init?: RequestInit): Promise<Response>;

Итак catch вы имеете в виду прибывает из Promise на самом деле. Определение типа catch происходит от TypeScript (lib.d.ts) на самом деле:

/**
 * Attaches a callback for only the rejection of the Promise.
 * @param onrejected The callback to execute when the Promise is rejected.
 * @returns A Promise for the completion of the callback.
 */
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;

И общее определение с any как тип для reason вполне оправдано, так как охватывает все случаи.

Надеюсь это поможет.

Другие вопросы по тегам