Håndtere typeløse tredjepartsbiblioteker
Bruk @types-pakker og skriv manuelle deklarasjoner.
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 typesSkrive 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/DefinitelyTypedBruke 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 typesskipLibCheck 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.
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
- Starte migreringen: allowJs og checkJs
- JSDoc-typeannotasjoner som bro
- Konverteringsstrategi fil for fil
- Håndtere typeløse tredjepartsbiblioteker