Hantera otypade tredjepartsbibliotek
Använd @types-paket och skriv manuella deklarationer
Hantera otypade tredjepartsbibliotek är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Problemet: Typer saknas
Vissa npm-paket levereras inte med TypeScript-deklarationer och har inget @types/-paket. Som standard behandlar TypeScript dem som any, vilket innebär att typsäkerheten går förlorad vid gränsen.
import legacyLib from "untyped-lib"; // legacyLib: any@types-paket
Projektet DefinitelyTyped tillhandahåller communityunderhållna typdeklarationer för tusentals bibliotek. Sök på npm efter @types/library-name.
npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript typesSkriva en deklarationsfil (.d.ts)
Om det inte finns något @types-paket kan man skriva en minimal deklarationsfil i projektet för att deklarera modulen och dess typer.
// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
export function doSomething(x: string): number;
export const version: string;
}Modulutökning
Utöka befintliga tredjepartstyper genom att lägga till egna deklarationer i en befintlig modul utan att skapa en fork.
// Extend Express Request with a custom property
declare namespace Express {
interface Request {
user?: AuthUser;
}
}Moduldeklarationer med jokertecken
Använd moduldeklarationer med jokertecken för hela kategorier av importer utan typer, till exempel resursfiler.
// 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 och bibliotek utan typer
Med noImplicitAny: true orsakar import av en modul utan typer ett kompileringsfel. Använd en deklarationsfil eller inaktivera noImplicitAny per fil med // @ts-ignore.
// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";Bidra till DefinitelyTyped
Om man skriver högkvalitativa typer för ett bibliotek utan typer kan de skickas till DefinitelyTyped för att hjälpa communityn.
# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTypedAnvända any som sista utväg
När typer inte kan tas fram snabbt kan man använda explicit any tillsammans med en kommentar som dokumenterar skulden. Det är bättre än implicit any eftersom det är avsiktligt och synligt.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add typesskipLibCheck för deklarationsfel
Om en tredjepartsfil med .d.ts innehåller interna fel tystar skipLibCheck: true dessa utan att påverka den egna typkontrollen.
{
"compilerOptions": {
"skipLibCheck": true
}
}Typade omslag för osäkra bibliotek
Skriv en typad omslagsmodul runt ett bibliotek utan typer för att kapsla in any och exponera ett säkert, typat API för resten av kodbasen.
// 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); }Sammanfattning: Bibliotek utan typer
Hantera bibliotek utan typer genom att först kontrollera @types/-paket, skriva minimala deklarationsfiler, använda modulutökning, skapa typade omslag och använda skipLibCheck för deklarationsfel i beroenden.
Snabbkontroll
Var bör man först leta efter typdeklarationer för ett npm-paket utan typer?
Vad du har lärt dig
Bibliotek utan typer: kontrollera @types/-paket, skriv deklarationsfiler, utöka befintliga typer, använd moduldeklarationer med jokertecken, kapsla in osäkra bibliotek i typade fasader och använd skipLibCheck för beroendefel.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Hantera otypade tredjepartsbibliotek” gratis?
Ja – hela texten till ”Hantera otypade tredjepartsbibliotek” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Hantera otypade tredjepartsbibliotek”?
Använd @types-paket och skriv manuella deklarationer Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Hantera otypade tredjepartsbibliotek”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Påbörja migreringen: allowJs och checkJs
- JSDoc-typannoteringar som övergång
- Strategi för konvertering fil för fil
- Hantera otypade tredjepartsbibliotek