TypeScript Academy · leksjon

Håndtere typeløse tredjepartsbiblioteker

Bruk @types-pakker og skriv manuelle deklarasjoner.

Leksjon 4 av 413 trinn

Håndtere typeløse tredjepartsbiblioteker er en gratis leksjon i TypeScript Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i TypeScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Problemet: Manglende typer

Noen npm-pakker leveres ikke med TypeScript-deklarasjoner og har ingen @types/-pakke. TypeScript behandler dem som any som standard, slik at typesikkerheten forsvinner ved grensen.

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

@types-pakker

Prosjektet DefinitelyTyped tilbyr fellesskapsvedlikeholdte typedeklarasjoner for tusenvis av biblioteker. Søk etter @types/library-name på npm.

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

Skrive en deklarasjonsfil (.d.ts)

Hvis det ikke finnes noen @types-pakke, kan De skrive en minimal deklarasjonsfil i prosjektet for å deklarere modulen og typene dens.

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

Modulutvidelse

Utvid eksisterende tredjepartstyper ved å legge til egne deklarasjoner i en eksisterende modul, uten å lage en forgrening av den.

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

Jokertegn-deklarasjoner for moduler

For hele kategorier av importer uten typer, for eksempel ressursfiler, kan De bruke jokertegn-deklarasjoner for moduler.

// 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 og biblioteker uten typer

Med noImplicitAny: true fører import av en modul uten typer til en kompileringsfeil. Bruk en deklarasjonsfil, eller deaktiver noImplicitAny per fil med // @ts-ignore.

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

Bidra til DefinitelyTyped

Hvis De skriver typedeklarasjoner av høy kvalitet for et bibliotek uten typer, kan De sende dem inn til DefinitelyTyped for å hjelpe fellesskapet.

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

Bruke any som siste utvei

Når De ikke kan skaffe typer raskt, kan De bruke eksplisitt any med en kommentar som dokumenterer den tekniske gjelden. Dette er bedre enn implisitt any fordi bruken er bevisst og synlig.

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

skipLibCheck for deklarasjonsfeil

Hvis en tredjeparts-.d.ts-fil inneholder interne feil, undertrykker skipLibCheck: true dem uten å påvirke Deres egen typekontroll.

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

Typeomslag for usikre biblioteker

Skriv en typet omslagsmodul rundt et bibliotek uten typer for å holde any samlet og tilby et typesikkert API til resten av kodebasen.

// 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); }

Oppsummering: Biblioteker uten typer

Håndter biblioteker uten typer: se først etter @types/-pakker, skriv minimale deklarasjonsfiler, bruk modulutvidelse, opprett typede omslag, og bruk skipLibCheck for deklarasjonsfeil i avhengigheter.

Hurtigsjekk

Hvor bør De først lete etter typedeklarasjoner for en npm-pakke uten typer?

Dette har De lært

Biblioteker uten typer: se etter @types/-pakker, skriv deklarasjonsfiler, utvid eksisterende typer, bruk jokertegn-deklarasjoner for moduler, pakk usikre biblioteker inn i typede fasader, og bruk skipLibCheck for avhengighetsfeil.

Gratis å komme i gang

Lær deg TypeScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
101
Leksjoner
352

Ofte stilte spørsmål

Er leksjonen «Håndtere typeløse tredjepartsbiblioteker» gratis?

Ja – hele teksten i «Håndtere typeløse tredjepartsbiblioteker» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av TypeScript Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Håndtere typeløse tredjepartsbiblioteker»?

Bruk @types-pakker og skriv manuelle deklarasjoner. Du øver på TypeScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med TypeScript Academy?

Ingen tidligere erfaring er nødvendig. TypeScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Håndtere typeløse tredjepartsbiblioteker»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne TypeScript Academy-leksjonen?

Ja. Alle TypeScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Starte migreringen: allowJs og checkJs
  2. JSDoc-typeannotasjoner som bro
  3. Konverteringsstrategi fil for fil
  4. Håndtere typeløse tredjepartsbiblioteker
← Tilbake til TypeScript Academy