0Pricing
TypeScript Academy · Aula

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)); // 0

Aplicando 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); // 102

Verificaçã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

  1. O Problema de Lançar Erros
  2. Modelando Tipos Result
  3. Tipos Option e Maybe
  4. Programação Orientada a Trilhos
← Voltar para TypeScript Academy