in, instanceof e uniões discriminadas
Use verificações com in/propriedades, instanceof para classes e uniões discriminadas para criar ramificações seguras.
in, instanceof e uniões discriminadas é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 2 de 3. 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 3 aulas no total.
Introdução
Objetivo: praticar três proteções poderosas: a verificação de propriedade, a verificação de instância para classes e as uniões discriminadas para ramificações claras.
Operador de propriedade
O operador de propriedade refina o tipo ao verificar um nome de propriedade em tempo de execução. É excelente para uniões de literais de objeto.
type HasLength = { length: number };
function print(v: string | HasLength) {
if ("length" in v) {
// v is HasLength
console.log("len:", v.length);
} else {
// v is string
console.log(v.toUpperCase());
}
}
print({ length: 3 });
print("ts");Verificação de instância
A verificação de instância examina protótipos de valores baseados em classes. Funciona quando o construtor está disponível em tempo de execução.
class Person {
constructor(public name: string) {}
}
function hello(x: Person | Date) {
if (x instanceof Person) {
console.log("Hi", x.name);
} else {
console.log("Year", x.getFullYear());
}
}
hello(new Person("Ada"));
hello(new Date(2024, 0, 1));União discriminada
Uniões discriminadas usam um rótulo literal (como kind) para fazer uma seleção clara, com refinamento completo em cada caso.
type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };
type Shape = Circle | Square;
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
case "square":
return s.size * s.size;
}
}
console.log(area({ kind: "circle", radius: 2 }));
console.log(area({ kind: "square", size: 3 }));Combinação de proteções
Combine verificações de rótulos com a verificação de propriedade para refinar estruturas aninhadas e acessar apenas membros seguros.
type FetchOk = { status: "ok"; data: { length: number } };
type FetchErr = { status: "error"; message: string };
type Result = FetchOk | FetchErr;
function handle(r: Result) {
if (r.status === "ok" && "length" in r.data) {
console.log("items:", r.data.length);
} else {
console.log("error:", r.message);
}
}
handle({ status: "ok", data: { length: 5 } });
handle({ status: "error", message: "oops" });Diretrizes
Diretrizes:
- Use a verificação de propriedade para uniões baseadas em propriedades.
- Use a verificação de instância com classes.
- Use uniões discriminadas para um fluxo de controle claro.
Verificação do operador de propriedade
Verificação rápida: qual operador verifica uma propriedade em tempo de execução e refina os tipos?
Recapitulação
Recapitulação: a verificação de propriedade testa propriedades, a verificação de instância verifica classes e as uniões discriminadas permitem instruções de seleção claras e seguras quanto aos tipos.
Perguntas Frequentes
A aula “in, instanceof e uniões discriminadas” é grátis?
Sim — o texto completo de “in, instanceof e uniões discriminadas” é 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 3 aulas no total.
O que vou aprender em “in, instanceof e uniões discriminadas”?
Use verificações com in/propriedades, instanceof para classes e uniões discriminadas para criar ramificações seguras. 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 2 de 3.
Quanto tempo leva a aula “in, instanceof e uniões discriminadas”?
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
- typeof, igualdade e redução por veracidade
- in, instanceof e uniões discriminadas
- Exaustividade com never (introdução)