1

Valeu demais pelo comentário.

Esse ponto do undefined em JS/TS é exatamente uma das coisas que me incomodam também.

TypeScript melhora muito a vida de quem está escrevendo o código, mas ele não muda o runtime. No fim, o JavaScript que roda ainda aceita muita coisa torta se a entrada vier de fora: API, formulário, JSON, integração, usuário, outro dev fazendo gambiarra, etc.

É aí que entra uma diferença importante: tipagem estática ajuda muito dentro do programa, mas não substitui validação de fronteira.

Se vem de fora, tem que validar.

O que eu gosto no Rust é que depois que você transforma aquela entrada externa em um tipo válido, o compilador começa a trabalhar a seu favor. Você para de carregar undefined, null, string vazia, valor parcial e estado impossível para dentro do sistema inteiro.

Em JS/TS é muito fácil o código virar um monte de if (!valor), if (data?.x?.y), fallback, checagem defensiva e fé.

Rust força você a modelar melhor:

tem valor ou não tem? Option.

deu certo ou falhou? Result.

esse estado pode existir ou não deveria existir? modela no tipo.

Isso reduz muito aquela programação paranoica em que você fica se defendendo do próprio código.

Acho que é por isso que muita gente gosta tanto de Rust. Não é só performance. É a sensação de que a linguagem te obriga a tirar ambiguidade da mesa antes da bomba chegar em produção.

Carregando publicação patrocinada...