Como passar em uma entrevista de TypeScript: principais perguntas com exemplos
TypeScript solidificou seu lugar como padrão para desenvolvimento enterprise em JavaScript. Se você está se preparando para uma entrevista, é importante não apenas conhecer a sintaxe, mas também entender como tipos, genéricos e utilitários funcionam. Neste artigo, analisamos as principais perguntas frequentemente feitas em entrevistas técnicas, com respostas detalhadas e exemplos de código.
O material será útil tanto para desenvolvedores junior quanto para aqueles que desejam refrescar os conhecimentos antes de uma reunião importante.
1. O que é TypeScript e para que serve?
TypeScript é um superconjunto estritamente tipado de JavaScript que compila para JS comum. O objetivo principal é adicionar tipagem estática, o que permite:
- Capturar erros em tempo de compilação, não em runtime.
- Melhorar a legibilidade e a manutenibilidade do código.
- Obter autocompletar e refatoração na IDE.
Exemplo:
// JavaScriptfunction add(a, b) { return a + b; // a e b podem ser qualquer coisa}
// TypeScriptfunction add(a: number, b: number): number { return a + b; // erro de compilação se passar uma string}Na entrevista, é importante enfatizar que o TypeScript não substitui o JavaScript, mas o complementa, tornando o código mais seguro.
2. Tipos básicos e seu uso
TypeScript oferece um amplo conjunto de tipos básicos. Perguntas sobre este tópico testam seu entendimento do sistema de tipos.
Liste os tipos principais:
number,string,booleannull,undefinedany— desativa a verificação de tipos (tente evitar)void— para funções que não retornam nadanever— para funções que nunca terminam (por exemplo, lançam uma exceção)
Exemplo com union-types:
type Status = 'active' | 'inactive' | 'pending';let userStatus: Status = 'active'; // apenas um dos três valoresFrequentemente perguntam sobre a diferença entre interface e type. Resposta: interface pode ser estendida (extends), enquanto type não. Para objetos, prefira interface; para primitivos e union, use type.
3. Genéricos (Generics) — a base da flexibilidade
Genéricos permitem criar componentes que funcionam com diferentes tipos sem perder a tipagem. Esta é uma das perguntas mais comuns.
Exemplo de um genérico simples:
function identity<T>(arg: T): T { return arg;}const result = identity<string>('hello'); // tipo stringconst numberResult = identity(42); // tipo number (inferência de tipo)Pergunta: Como restringir um genérico?
Use a palavra-chave extends:
function getLength<T extends { length: number }>(arg: T): number { return arg.length;}getLength('hello'); // 5getLength([1,2,3]); // 3// getLength(123); // erro: number não tem lengthTambém perguntarão sobre genéricos em interfaces:
interface ApiResponse<T> { data: T; status: number; error?: string;}const userResponse: ApiResponse<{ id: number; name: string }> = { data: { id: 1, name: 'Alice' }, status: 200};4. Tipos Utilitários (Utility Types)
Os utilitários embutidos do TypeScript simplificam manipulações com tipos. Conhecê-los é sinal de um desenvolvedor experiente.
Top 5 utilitários que você deve conhecer:
Partial<T>— torna todos os campos opcionais.Required<T>— torna todos os campos obrigatórios.Pick<T, K>— seleciona apenas as chaves especificadas.