Funções de guarda de tipos definidas pelo usuário
Escreva predicados is para criar guardas de tipos personalizadas
Funções de guarda de tipos definidas pelo usuário é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. 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 4 aulas no total.
Boas-vindas
O tipo de retorno de predicado is
function isString(val: unknown): val is string {
return typeof val === 'string';
}Uso de uma proteção de tipo
function process(val: unknown) {
if (isString(val)) {
console.log(val.toUpperCase()); // val: string
}
}Proteção de tipo para interfaces
interface Cat { meow(): void }
interface Dog { bark(): void }
function isCat(pet: Cat | Dog): pet is Cat {
return 'meow' in pet;
}Proteções de tipo para objetos complexos
interface User { name: string; age: number; }
function isUser(val: unknown): val is User {
return (
typeof val === 'object' &&
val !== null &&
typeof (val as any).name === 'string' &&
typeof (val as any).age === 'number'
);
}Proteções de tipo versus asserções
Array.isArray como proteção de tipo
function flatten(val: string | string[]): string[] {
return Array.isArray(val) ? val : [val];
}Proteções de tipo genéricas
function isNonNull<T>(val: T | null | undefined): val is T {
return val !== null && val !== undefined;
}
const values = [1, null, 2, undefined].filter(isNonNull);
// values: number[]Funções de asserção
function assertIsString(val: unknown): asserts val is string {
if (typeof val !== 'string') throw new TypeError('Not a string');
}
assertIsString(input);
console.log(input.toUpperCase()); // narrowed to stringA responsabilidade das proteções de tipo
Proteções de tipo em filter e find
const mixed: (string | null)[] = ['a', null, 'b'];
const strings = mixed.filter((x): x is string => x !== null);
// strings: string[]Verificação rápida
Recapitulação
Perguntas Frequentes
A aula “Funções de guarda de tipos definidas pelo usuário” é grátis?
Sim — o texto completo de “Funções de guarda de tipos definidas pelo usuário” é 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 4 aulas no total.
O que vou aprender em “Funções de guarda de tipos definidas pelo usuário”?
Escreva predicados is para criar guardas de tipos personalizadas 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 3 de 4.
Quanto tempo leva a aula “Funções de guarda de tipos definidas pelo usuário”?
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 e restrição por veracidade
- instanceof e in na restrição de tipos
- Funções de guarda de tipos definidas pelo usuário
- Verificação de exaustividade com never