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 });