0Pricing
TypeScript Academy · Lezione

Test dei tipi con expectTypeOf e tsd

Verifichi la correttezza dei tipi insieme al comportamento a runtime.

Test dei tipi con expectTypeOf e tsd è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 4 lezioni in totale.

Benvenuto

Testare i tipi in sé, non solo il comportamento a runtime, garantisce che le utility TypeScript e i tipi generici funzionino correttamente.

Perché testare i tipi

Le utility generiche e i tipi condizionali possono contenere bug che riguardano solo determinati argomenti di tipo. I test dei tipi li rilevano.

expectTypeOf di Vitest

Vitest fornisce expectTypeOf per le asserzioni dei tipi in fase di compilazione.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).toBeNumber();
expectTypeOf('hello').toBeString();

Asserzione dei tipi restituiti

Verifichi il tipo restituito da una funzione.
import { identity } from '../src/utils';
expectTypeOf(identity(42)).toEqualTypeOf<number>();
expectTypeOf(identity('hi')).toEqualTypeOf<string>();

Libreria tsd

tsd è uno strumento CLI per testare i tipi dei file di dichiarazione TypeScript.
npm install --save-dev tsd

Asserzioni tsd

Scriva file .test-d.ts con le asserzioni tsd.
import { expectType, expectError } from 'tsd';
import { add } from '../src';
expectType<number>(add(1, 2));
expectError(add('a', 'b'));

Libreria expect-type

La libreria expect-type fornisce asserzioni dei tipi compatibili con Jest.
import { expectTypeOf } from 'expect-type';
expectTypeOf<User>().toHaveProperty('name').toBeString();

Test dei tipi condizionali

Verifichi che i tipi condizionali producano l'output corretto per diversi input.
type IsArray<T> = T extends any[] ? true : false;
expectTypeOf<IsArray<string[]>>().toEqualTypeOf<true>();
expectTypeOf<IsArray<string>>().toEqualTypeOf<false>();

Test dei mapped type

Si assicuri che le utility dei mapped type producano strutture corrette.
type Mutable = { -readonly [K in keyof ReadonlyUser]: ReadonlyUser[K] };
expectTypeOf<Mutable['name']>().toBeString();
expectTypeOf<Mutable>().not.toMatchTypeOf<Readonly<Mutable>>();

Esecuzione di tsd nella CI

Aggiunga tsd alla pipeline CI per rilevare le regressioni dei tipi.
// package.json
{ "scripts": { "test:types": "tsd" } }

Test dei tipi e test a runtime

I test dei tipi vengono eseguiti in fase di compilazione, senza costi a runtime. I test a runtime convalidano il comportamento. Entrambi sono necessari.

Verifica rapida

Che cosa verifica `expectTypeOf(add(1, 2)).toEqualTypeOf()`?

Riepilogo

Test dei tipi con expectTypeOf e tsd: ha acquisito i concetti e i pattern fondamentali.

Domande Frequenti

La lezione «Test dei tipi con expectTypeOf e tsd» è gratuita?

Sì — il testo completo di «Test dei tipi con expectTypeOf e tsd» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 4 lezioni in totale.

Cosa imparerò in «Test dei tipi con expectTypeOf e tsd»?

Verifichi la correttezza dei tipi insieme al comportamento a runtime. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare TypeScript Academy?

Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Test dei tipi con expectTypeOf e tsd»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?

Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione di Jest per TypeScript con ts-jest
  2. Scrittura di unit test type-safe
  3. Mock di moduli e funzioni in TypeScript
  4. Test dei tipi con expectTypeOf e tsd
← Torna a TypeScript Academy