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"'