Tipos Option e Maybe
Modele explicitamente a presença ou ausência de um valor.
Tipos Option e Maybe é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Representando a ausência
Às vezes, um valor pode simplesmente estar ausente, sem nenhum erro a informar. Uma Opção (também chamada de Talvez) representa explicitamente a presença ou a ausência, como alternativa a null e undefined.
Definindo Opção
Opção é uma união discriminada com a etiqueta some. Quando some é verdadeira, existe um valor; quando é falsa, não há nada.
type Option<T> =
| { some: true; value: T }
| { some: false };Construtores
As funções auxiliares some e none facilitam a criação de valores de Opção, de modo semelhante a ok/err em Resultado.
const some = <T>(value: T): Option<T> => ({ some: true, value });
const none: Option<never> = { some: false };Retornando uma Opção
Uma busca que pode não encontrar nada retorna uma Opção em vez de T | undefined. A opcionalidade fica explícita no tipo.
function find<T>(arr: T[], pred: (x: T) => boolean): Option<T> {
const hit = arr.find(pred);
return hit === undefined ? none : some(hit);
}Restringindo com some
Verifique opt.some para acessar o valor com segurança. O compilador só permite ler value dentro do ramo de presença.
const r = find([1, 2, 3], n => n > 1);
if (r.some) console.log(r.value); // 2
else console.log("not found");Por que não usar apenas null?
null e undefined são fáceis de esquecer e se misturam a outros tipos. Uma Opção explícita obriga o tratamento do caso de ausência e deixa claro que ele é intencional.
Opção versus T | undefined
Ambos podem representar a ausência, mas a Opção é uma estrutura nomeada e deliberada à qual você pode associar funções auxiliares (map, getOrElse), incentivando um tratamento consistente em toda a base de código.
// undefined is implicit and easy to ignore;
// Option is explicit and self-documenting.Uma função auxiliar getOrElse
Para reduzir uma Opção a um valor concreto, forneça uma alternativa para o caso de ausência. Assim, o tratamento da ausência fica reunido em um único local evidente.
function getOrElse<T>(o: Option<T>, fallback: T): T {
return o.some ? o.value : fallback;
}
console.log(getOrElse(none, 0)); // 0Aplicando map a uma Opção
Um map transforma o valor interno somente quando ele está presente, deixando a ausência intacta. Isso permite encadear transformações sem verificações repetidas.
function mapOpt<T, U>(o: Option<T>, f: (t: T) => U): Option<U> {
return o.some ? some(f(o.value)) : none;
}
console.log(mapOpt(some(5), n => n * 2)); // { some: true, value: 10 }Opção versus Resultado
Use Opção quando a ausência não tiver um motivo (uma busca sem resultado). Use Resultado quando a falha tiver um erro explicativo. Escolha com base na necessidade de transmitir por quê.
Compondo Opções
Como a Opção tem map e getOrElse, as sequências de etapas opcionais permanecem legíveis, e a ausência interrompe automaticamente a sequência.
const out = getOrElse(mapOpt(find([1,2], n => n > 1), n => n + 100), -1);
console.log(out); // 102Verificação rápida
Faça uma verificação rápida desta lição.
Recapitulação
Opção<T> é { some: true; value } ou { some: false }, representando explicitamente a ausência em vez de null. Crie-a com some/none, restrinja-a por meio de some e use funções auxiliares como getOrElse e map. Prefira Opção quando a ausência não precisar de um motivo e Resultado quando a falha precisar.
Perguntas Frequentes
A aula “Tipos Option e Maybe” é grátis?
Sim — o texto completo de “Tipos Option e Maybe” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Tipos Option e Maybe”?
Modele explicitamente a presença ou ausência de um valor. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Tipos Option e Maybe”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O Problema de Lançar Erros
- Modelando Tipos Result
- Tipos Option e Maybe
- Programação Orientada a Trilhos