TypeScript Academy · Lezione

Gestione delle librerie di terze parti senza tipi

Utilizzi i pacchetti @types e scriva dichiarazioni manuali.

Lezione 4 di 413 passaggi

Gestione delle librerie di terze parti senza tipi è 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.

Il problema: tipi mancanti

Alcuni pacchetti npm non includono dichiarazioni TypeScript e non hanno un pacchetto @types/. Per impostazione predefinita, TypeScript li tratta come any, perdendo la sicurezza dei tipi al confine del codice.

import legacyLib from "untyped-lib"; // legacyLib: any

Pacchetti @types

Il progetto DefinitelyTyped fornisce dichiarazioni di tipo gestite dalla community per migliaia di librerie. Cerchi su npm @types/library-name.

npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript types

Scrivere un file di dichiarazione (.d.ts)

Se non esiste alcun pacchetto @types, scriva nel progetto un file di dichiarazione minimo per dichiarare il modulo e i relativi tipi.

// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
  export function doSomething(x: string): number;
  export const version: string;
}

Estensione dei moduli

Estenda i tipi di terze parti esistenti aggiungendo le proprie dichiarazioni a un modulo esistente, senza doverne creare un fork.

// Extend Express Request with a custom property
declare namespace Express {
  interface Request {
    user?: AuthUser;
  }
}

Dichiarazioni di moduli con wildcard

Per intere categorie di importazioni prive di tipo, ad esempio i file di risorse, usi dichiarazioni di moduli con wildcard.

// src/types/assets.d.ts
declare module "*.svg" {
  const content: string;
  export default content;
}
declare module "*.json" {
  const value: Record<string, unknown>;
  export default value;
}

noImplicitAny e librerie prive di tipo

Con noImplicitAny: true, l'importazione di un modulo privo di tipo causa un errore di compilazione. Usi un file di dichiarazione oppure disabiliti noImplicitAny per singolo file con // @ts-ignore.

// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";

Contribuire a DefinitelyTyped

Se scrive tipi di alta qualità per una libreria priva di tipi, li invii a DefinitelyTyped per aiutare la community.

# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTyped

Usare any come ultima risorsa

Quando non riesce a ottenere rapidamente i tipi, usi any in modo esplicito e annoti il debito tecnico da ripagare. È meglio dell'any implicito perché è intenzionale e visibile.

// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add types

skipLibCheck per gli errori nelle dichiarazioni

Se un file .d.ts di terze parti contiene errori interni, skipLibCheck: true li silenzia senza influire sul controllo dei tipi del proprio codice.

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

Wrapper tipizzati per librerie non sicure

Scriva un modulo wrapper tipizzato intorno a una libreria priva di tipi per confinare l'any ed esporre al resto della codebase un'API tipizzata e sicura.

// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }

Riepilogo: librerie prive di tipi

Per gestire le librerie prive di tipi, controlli prima i pacchetti @types/, scriva file di dichiarazione minimi, usi l'estensione dei moduli, crei wrapper tipizzati e usi skipLibCheck per gli errori nelle dichiarazioni delle dipendenze.

Verifica rapida

Qual è il primo posto in cui cercare le dichiarazioni di tipo per un pacchetto npm privo di tipi?

Cosa ha imparato

Librerie prive di tipi: controlli i pacchetti @types/, scriva file di dichiarazione, estenda i tipi esistenti, usi dichiarazioni di moduli con wildcard, racchiuda le librerie non sicure in facciate tipizzate e usi skipLibCheck per gli errori delle dipendenze.

Gratis per iniziare

Impara TypeScript con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
101
Lezioni
352

Domande Frequenti

La lezione «Gestione delle librerie di terze parti senza tipi» è gratuita?

Sì — il testo completo di «Gestione delle librerie di terze parti senza tipi» è 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 «Gestione delle librerie di terze parti senza tipi»?

Utilizzi i pacchetti @types e scriva dichiarazioni manuali. 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 «Gestione delle librerie di terze parti senza tipi»?

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. Avvio della migrazione: allowJs e checkJs
  2. Annotazioni di tipo JSDoc come collegamento
  3. Strategia di conversione file per file
  4. Gestione delle librerie di terze parti senza tipi
← Torna a TypeScript Academy