Tipos Literais de Texto e Números
Restrinja os valores a textos e números exatos usando tipos literais.
Tipos Literais de Texto e Números é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 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.
O que é um tipo literal?
A maioria dos tipos descreve um conjunto de valores. string significa qualquer cadeia de caracteres, e number significa qualquer número. Um tipo literal restringe isso a um único valor exato.
O tipo 'north' permite apenas a cadeia de caracteres 'north' — nada mais. Os tipos literais permitem modelar conjuntos precisos e finitos de valores permitidos diretamente no sistema de tipos.
let dir: 'north' = 'north';
console.log(dir);
// dir = 'south'; // Error: not assignable to type 'north'Uniões de literais de cadeia de caracteres
Um único literal não é muito útil por si só. Combine vários com | para formar uma união de literais. Essa é a maneira idiomática de modelar um conjunto fixo de opções.
Direction abaixo só pode ser uma de quatro cadeias de caracteres exatas.
type Direction = 'north' | 'south' | 'east' | 'west';
let heading: Direction = 'east';
console.log('Heading:', heading);
heading = 'west';
console.log('Now:', heading);Rejeitando valores inválidos
O poder das uniões de literais está no fato de o compilador rejeitar qualquer coisa fora do conjunto permitido. Erros de digitação e opções inválidas se tornam erros de compilação, em vez de erros em tempo de execução.
type Direction = 'north' | 'south' | 'east' | 'west';
let heading: Direction = 'north';
console.log(heading);
// heading = 'up'; // Error: '"up"' is not assignable to 'Direction'Literais como parâmetros de funções
Use uniões de literais para parâmetros de funções que aceitam apenas valores específicos. Quem chama a função recebe sugestões de preenchimento automático e é impedido de passar algo inválido.
type Direction = 'north' | 'south' | 'east' | 'west';
function move(dir: Direction): string {
return 'Moving ' + dir;
}
console.log(move('south'));
// console.log(move('left')); // ErrorTipos literais numéricos
Os tipos literais não servem apenas para cadeias de caracteres. Você também pode usar números exatos. Um exemplo clássico é um dado de seis faces, cujo valor deve ser um dos números de 1 a 6.
type Dice = 1 | 2 | 3 | 4 | 5 | 6;
function roll(): Dice {
return (Math.floor(Math.random() * 6) + 1) as Dice;
}
console.log('Rolled:', roll());Literais numéricos em parâmetros
As uniões de literais numéricos restringem as entradas a um conjunto exato de números — perfeitas para níveis de qualidade, códigos semelhantes aos HTTP ou tamanhos de grade.
type Quality = 1 | 2 | 3;
function setQuality(level: Quality): void {
console.log('Quality set to', level);
}
setQuality(2);
// setQuality(5); // Error: 5 is not 1 | 2 | 3Misturando literais de cadeia de caracteres e numéricos
Uma união pode combinar diferentes tipos de literais. Isso é útil para APIs que aceitam uma predefinição nomeada ou um valor bruto.
type Size = 'small' | 'large' | 0 | 100;
function resize(s: Size): void {
console.log('Resizing to', s);
}
resize('small');
resize(100);Tipos literais booleanos
Até os booleanos têm tipos literais: true e false são tipos e também valores. O tipo completo boolean é, na verdade, apenas true | false.
type AlwaysOn = true;
let enabled: AlwaysOn = true;
console.log('Enabled:', enabled);
// enabled = false; // Error: false not assignable to trueLiterais aprimoram a documentação
Uma união de literais também funciona como documentação. Qualquer pessoa que leia type Status = 'idle' | 'loading' | 'done' sabe imediatamente todos os estados possíveis — sem precisar adivinhar e sem strings mágicas espalhadas pelo código.
type Status = 'idle' | 'loading' | 'done';
function render(s: Status): string {
return 'State is: ' + s;
}
console.log(render('loading'));Combinando literais com outros tipos
Você pode misturar tipos literais com tipos mais abrangentes em uma união. Um padrão comum é 'auto' | number, que significa a palavra-chave especial 'auto' ou qualquer número.
type Width = 'auto' | number;
function setWidth(w: Width): void {
console.log('Width:', w);
}
setWidth('auto');
setWidth(320);Literais como constantes nomeadas
Os tipos literais combinam muito bem com constantes nomeadas. Defina o tipo uma vez, reutilize-o em todos os lugares e refatore com segurança. O compilador mantém todos os usos consistentes.
type Theme = 'light' | 'dark';
const DEFAULT_THEME: Theme = 'dark';
function applyTheme(t: Theme): void {
console.log('Applying', t, 'theme');
}
applyTheme(DEFAULT_THEME);Verificação rápida
Teste sua compreensão dos tipos literais.
Recapitulação: tipos literais
Você aprendeu que:
- Tipos literais representam um único valor exato, por exemplo,
'north'ou6. - Combinar literais com
|cria uma união finita de valores permitidos. - Eles funcionam com cadeias de caracteres, números e booleanos, e podem ser combinados com tipos mais abrangentes, como
'auto' | number. - Quando usados como parâmetros de funções, oferecem preenchimento automático e rejeitam entradas inválidas em tempo de compilação.
A seguir, exploraremos como o TypeScript decide entre tipos literais e tipos ampliados.
type Direction = 'north' | 'south' | 'east' | 'west';
type Dice = 1 | 2 | 3 | 4 | 5 | 6;
function describe(d: Direction, n: Dice): string {
return 'Go ' + d + ' ' + n + ' steps';
}
console.log(describe('north', 3));Perguntas Frequentes
A aula “Tipos Literais de Texto e Números” é grátis?
Sim — o texto completo de “Tipos Literais de Texto e Números” é 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 Literais de Texto e Números”?
Restrinja os valores a textos e números exatos usando tipos literais. 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 1 de 4.
Quanto tempo leva a aula “Tipos Literais de Texto e Números”?
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
- Tipos Literais de Texto e Números
- Literais Booleanos e Inferência de Literais
- Asserções const com as const
- Combinando Literais em Uniões