TypeScript
Hur man använder ett javascript-bibliotek utan en typdefinitionsfil
Sök…
Introduktion
Medan vissa befintliga JavaScript-bibliotek har typdefinitionsfiler , finns det många som inte gör det.
TypeScript erbjuder ett par mönster för att hantera saknade deklarationer.
Förklara en global
Det är ibland lättast att bara förklara en global av vilken typ som any
, särskilt i enkla projekt.
Om jQuery inte hade typdeklarationer ( det gör det ), kan du sätta
declare var $: any;
Nu kommer varje användning av $ att skrivas any
.
Gör en modul som exporterar en standard som helst
För mer komplicerade projekt, eller i fall där du tänker gradvis skriva ett beroende, kan det vara renare att skapa en modul.
Använda JQuery (även om det har typtyper tillgängliga ) som exempel:
// place in jquery.d.ts
declare let $: any;
export default $;
Och sedan i alla filer i ditt projekt kan du importera denna definition med:
// some other .ts file
import $ from "jquery";
Efter denna import kommer $
att skrivas som any
.
Om biblioteket har flera toppnivåvariabler, exportera och importera med namn istället:
// place in jquery.d.ts
declare module "jquery" {
let $: any;
let jQuery: any;
export { $ };
export { jQuery };
}
Du kan sedan importera och använda båda namnen:
// some other .ts file
import {$, jQuery} from "jquery";
$.doThing();
jQuery.doOtherThing();
Använd en omgivningsmodul
Om du bara vill ange avsikten med en import (så att du inte vill förklara en global) men inte vill bry dig med några uttryckliga definitioner kan du importera en omgivningsmodul.
// in a declarations file (like declarations.d.ts)
declare module "jquery"; // note that there are no defined exports
Du kan sedan importera från den omgivande modulen.
// some other .ts file
import {$, jQuery} from "jquery";
Allt som importeras från den deklarerade modulen (som $
och jQuery
) ovan kommer att vara av vilken typ som any