Tipos Literais

Definição

Os tipos literais são subtipos de type annotations no TypeScript, ou seja, o tipo literal 100 é um subtipo de number.

Ao definir uma variável let com um tipo literal, a mesma só permite a atribuição da valor desse tipo literal, dessa forma, essa variável exerce a função de uma const. Por exemplo:

let a: 120 = 120;
a = 100; // Error

A forma de declarar uma variável com literal type mostrada acima não é recomendada pelo TypeScript, então para isso é necessário utilizar a seguinte notação:

let a = 120 as const;

Esse tipo de declaração é geralmente utilizada em objetos onde é necessário garantir a imutabilidade de uma propriedade, pois os objetos, no JavaScript, são mutáveis.

OBS

A junção dos literal types com union types exercem a mesma função dos enums.

enum Cores {
  VERMELHO,
  AMARELO,
  AZUL,
}
 
console.log(Cores.VERMELHO); // VERMELHO
function escolherCor(cor: 'Vermelho' | 'Amarelo' | 'Azul') {
  return cor;
}
 
console.log(escolherCor('Vermelho')); // Vermelho

Exemplo

const person = {
  name: 'Luiz' as const,
  lastName: 'Miranda',
};
 
person.name = 'João'; // Error: Type '"João"' is not assignable to type '"Luiz"'