javascript - vad är en .d.ts-fil och varför behövs den
Jag granskar en källkod för angular-ui-router och det finns filen angular-ui-router.d.ts inne i api-mappen med följande innehåll:
declare module ng.ui {
interface IState {
name?: string;
template?: string;
templateUrl?: any; // string || () => string
templateProvider?: any; // () => string || IPromise<string>
}
interface ITypedState<T> extends IState {
data?: T;
}
Jag har läst att denna fil är TypeScript-typdefinitioner. Vad är det? Varför behövs det?
Svar #1
Det är en deklarationsfil:
När ett TypeScript-skript kompileras finns det ett alternativ att generera en deklarationsfil (med filtillägget .d.ts) som fungerar som ett gränssnitt till komponenterna i den kompilerade JavaScripten. I processen tar kompilatorn bort alla funktions- och metodkroppar och behåller endast signaturerna för de typer som exporteras. Den resulterande deklarationsfilen kan sedan användas för att beskriva de exporterade virtuella TypeScript-typerna hos ett JavaScript-bibliotek eller en modul när en tredjepartsutvecklare använder det från TypeScript.
Konceptet med deklarationsfiler är analogt med konceptet med header-filer som finns i C/C++.
Svar #2
Här är definitionen. d.ts-filerna beskriver formen på tredjepartsbibliotek och gör att TypeScript-kompilatorn vet hur man hanterar denna tredjepartskod (tillhandahålla typinformation till kompilatorn)