typescript - index.d.ts vs. vanlig typfil?
Om jag vill ha ett ställe att definiera mina typer som är tillgängliga för resten av projektet, ska jag använda index.d.ts eller bara definiera som vilken annan .ts-fil som helst?
För närvarande har jag en mapp <root>/src/types/index.ts som fungerar, och den kompileras till <root>/dist, där <root> innehåller package.json, tsconfig.json, etc. Jag undrar om detta är normal praxis eller om jag borde definiera en index.d.ts. Jag är osäker på användningen av index.d.ts eftersom det verkar vara för när man publicerar .js npm-moduler, medan jag bara har mitt eget lilla projekt som helt och hållet är .ts. Om jag ska använda index.d.ts, ska den då ligga på nivån av <root> eller <root>/src?
Svar #1
Om jag vill ha ett ställe att definiera mina typer som är tillgängliga för resten av projektet, ska jag använda
index.d.tseller definiera som vilken annan.ts-fil som helst?
TL;DR: Om du har ett befintligt JavaScript-bibliotek använder du en .d.ts-fil för att definiera dess typer. Om du skapar nya typer i ditt projekt från början använder du .ts-filer.
.d.ts-filer är typdefinitionsfiler. Deras syfte är att möjliggöra interaktion med tredjeparts JavaScript-API:er på ett strikt typat sätt via TypeScript. Du kan lära dig mer om dessa filer på DefinitelyTyped och söka efter befintliga definitioner med Microsofts TypeSearch. Om du använder ett API som du inte kan hitta typdefinitioner för, kan du överväga att skriva dina egna .d.ts-filer enligt Microsofts riktlinjer. Du kan också ta en titt på hur man skapar en .d.ts “typings”-definitionsfil från ett befintligt JavaScript-bibliotek.
Jag vill ha ett ställe för att definiera mina typer åtkomliga för resten av projektet
Du kanske vill titta på fat. Fat är ett sätt att sammanfoga flera moduler så att du kan importera deras innehåll med ett enda uttalande. Se även: Vad används alla index.ts till? Detta ger dig mer flexibilitet när du strukturerar ditt projekt eftersom du kan ha flera filer i flera mappar och sammanfoga dem för enklare import. Observera att du skulle behöva en modulbuntare som webpack som stödjer användning av fat.
Om jag också ska använda
index.d.ts, ska det då ligga på nivån<root>eller<root>/src?
Detta handlar inte exakt om det är index.d.ts eller index.ts utan om modulupplösning.