Ваш машинописный код код переносится в javascript до того, как браузер выполнит его. Это будет выглядеть примерно так:
export async function http( request ) {
const response = await fetch( request );
response.parsedBody = await response.json();
return response;
}
const response = await http("https://thisURLdoesNotReturnANumber");
Нет типов, как вы можете видеть. Браузеры ничего не знают о типах, определенных в машинописи.
Позже вы можете получить или не получить ошибку времени выполнения. Чтобы бросить как можно раньше, вам нужно самостоятельно выполнить проверку во время выполнения внутри вашей функции http<T>()
.
Или вы можете использовать стороннюю библиотеку для выполнения этой работы. Их там много.