Fácil TypeScript
Criando um type alias para Livro
Enunciado
Crie um type alias chamado Livro que represente um livro com as propriedades:
titulo: string (obrigatória)autor: string (obrigatória)anoPublicacao: number (opcional)
Depois, crie uma função descreverLivro que receba um Livro e retorne uma string no formato:
"Título: {titulo}, Autor: {autor}, Ano: {anoPublicacao}". Se anoPublicacao não for fornecido, use "Ano: desconhecido".
Requisitos
- Definir o type alias
Livrocom as propriedades especificadas. - A propriedade
anoPublicacaodeve ser opcional. - A função
descreverLivrodeve tratar a ausência deanoPublicacao. - A saída deve seguir exatamente o formato pedido.
Código inicial
// Defina o type alias Livro e a função descreverLivro
type Livro = {
// complete aqui
};
function descreverLivro(livro: Livro): string {
// complete aqui
}
// Teste
const livro1: Livro = { titulo: 'Dom Casmurro', autor: 'Machado de Assis', anoPublicacao: 1899 };
const livro2: Livro = { titulo: 'O Hobbit', autor: 'J.R.R. Tolkien' };
console.log(descreverLivro(livro1));
console.log(descreverLivro(livro2));
Saída esperada
Título: Dom Casmurro, Autor: Machado de Assis, Ano: 1899
Título: O Hobbit, Autor: J.R.R. Tolkien, Ano: desconhecido
Ver dica
Use ? para tornar anoPublicacao opcional. Na função, verifique se anoPublicacao é undefined com um if ou use o operador ??.
Mostrar solução
type Livro = {
titulo: string;
autor: string;
anoPublicacao?: number; // opcional
};
function descreverLivro(livro: Livro): string {
const ano = livro.anoPublicacao !== undefined ? livro.anoPublicacao : 'desconhecido';
return `Título: ${livro.titulo}, Autor: ${livro.autor}, Ano: ${ano}`;
}
// Teste
const livro1: Livro = { titulo: 'Dom Casmurro', autor: 'Machado de Assis', anoPublicacao: 1899 };
const livro2: Livro = { titulo: 'O Hobbit', autor: 'J.R.R. Tolkien' };
console.log(descreverLivro(livro1));
console.log(descreverLivro(livro2));
Passo a passo
- Definimos o type alias
Livrocom as propriedadestituloeautorobrigatórias eanoPublicacaoopcional (marcada com?). - A função
descreverLivrorecebe um parâmetro do tipoLivroe retorna uma string. - Dentro da função, verificamos se
anoPublicacaoestá definido. Se sim, usamos seu valor; caso contrário, usamos a string'desconhecido'. - Construímos a string final usando template literals, interpolando os valores.
- Criamos dois objetos de exemplo: um com
anoPublicacaoe outro sem. - Chamamos a função para cada objeto e imprimimos o resultado no console.
Por que funciona
O type alias Livro define a forma do objeto, garantindo que as propriedades obrigatórias estejam presentes e que a opcional possa ser omitida. A verificação de undefined permite tratar a ausência da propriedade de forma segura, evitando erros de compilação ou resultados inesperados.
Erros comuns
- Esquecer o
?emanoPublicacao: se declararanoPublicacao: number, o TypeScript exigirá que todo objetoLivrotenha essa propriedade, causando erro ao criarlivro2. - Acessar
anoPublicacaosem verificar: se fizerlivro.anoPublicacao.toString(), o TypeScript reclamará que o valor pode serundefined. Use?.ou verifique antes. - Confundir
?com valor padrão:?apenas permite ausência; não define um valor padrão. É preciso tratar na lógica.
Outra forma de resolver
Usar o operador de coalescência nula (??):
const ano = livro.anoPublicacao ?? 'desconhecido';
É mais conciso e preferível quando se quer um valor padrão para undefined ou null.
Saída esperada
Título: Dom Casmurro, Autor: Machado de Assis, Ano: 1899
Título: O Hobbit, Autor: J.R.R. Tolkien, Ano: desconhecido