Não apenas Early Return retornando algo, mas pode também lançar um exception personalizado pra ser tratado em um nível mais alto.
interface PedidoException {
mensagem: string;
codigo: number;
}
class ExceptionError extends Error {
constructor(dados: PedidoException) {
super(dados.mensagem);
this.cause = dados.codigo;
}
}
function processarPedido(pedido) {
if (!pedido) throw new ExceptionError({ mensagem: 'Pedido inválido', codigo: 0 });
// Lógica do pedido
return 'Pedido processado';
}
throw new ExceptionError({ mensagem: 'Pedido inválido', codigo: 0 });