0Pricing
TypeScript Academy · Aula

Testando tipos com expectTypeOf e tsd

Verifique a correção dos tipos junto com o comportamento em tempo de execução

Testando tipos com expectTypeOf e tsd é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 4 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

Testar os próprios tipos — não apenas o comportamento em tempo de execução — garante que seus utilitários do TypeScript e tipos genéricos funcionem corretamente.

Por que testar tipos

Utilitários genéricos e tipos condicionais podem conter erros que afetam apenas determinados argumentos de tipo. Os testes de tipos detectam esses erros.

expectTypeOf do Vitest

O Vitest fornece expectTypeOf para asserções de tipos em tempo de compilação.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).toBeNumber();
expectTypeOf('hello').toBeString();

Afirmando tipos de retorno

Verifique o tipo de retorno de uma função.
import { identity } from '../src/utils';
expectTypeOf(identity(42)).toEqualTypeOf<number>();
expectTypeOf(identity('hi')).toEqualTypeOf<string>();

Biblioteca tsd

tsd é uma ferramenta de CLI para testar tipos nos arquivos de declaração do TypeScript.
npm install --save-dev tsd

Asserções do tsd

Escreva arquivos .test-d.ts com asserções do tsd.
import { expectType, expectError } from 'tsd';
import { add } from '../src';
expectType<number>(add(1, 2));
expectError(add('a', 'b'));

Biblioteca expect-type

A biblioteca expect-type fornece asserções de tipos compatíveis com o Jest.
import { expectTypeOf } from 'expect-type';
expectTypeOf<User>().toHaveProperty('name').toBeString();

Testando tipos condicionais

Verifique se os tipos condicionais produzem a saída correta para várias entradas.
type IsArray<T> = T extends any[] ? true : false;
expectTypeOf<IsArray<string[]>>().toEqualTypeOf<true>();
expectTypeOf<IsArray<string>>().toEqualTypeOf<false>();

Testando tipos mapeados

Garanta que os utilitários de tipos mapeados produzam as estruturas corretas.
type Mutable = { -readonly [K in keyof ReadonlyUser]: ReadonlyUser[K] };
expectTypeOf<Mutable['name']>().toBeString();
expectTypeOf<Mutable>().not.toMatchTypeOf<Readonly<Mutable>>();

Executando tsd na CI

Adicione o tsd ao seu pipeline de CI para detectar regressões de tipos.
// package.json
{ "scripts": { "test:types": "tsd" } }

Testes de tipos versus testes em tempo de execução

Os testes de tipos são executados em tempo de compilação, sem custo em tempo de execução. Os testes em tempo de execução validam o comportamento. Ambos são necessários.

Verificação rápida

O que `expectTypeOf(add(1, 2)).toEqualTypeOf()` verifica?

Recapitulação

Testando tipos com expectTypeOf e tsd: você dominou os principais conceitos e padrões.

Perguntas Frequentes

A aula “Testando tipos com expectTypeOf e tsd” é grátis?

Sim — o texto completo de “Testando tipos com expectTypeOf e tsd” é 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 “Testando tipos com expectTypeOf e tsd”?

Verifique a correção dos tipos junto com o comportamento em tempo de execução 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 4 de 4.

Quanto tempo leva a aula “Testando tipos com expectTypeOf e tsd”?

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

  1. Configurando Jest para TypeScript com ts-jest
  2. Escrevendo testes unitários seguros quanto aos tipos
  3. Simulando módulos e funções em TypeScript
  4. Testando tipos com expectTypeOf e tsd
← Voltar para TypeScript Academy