typescript - index.d.ts vs. vanlig typefil?


Hvis jeg vil ha ett sted å definere typene mine som er tilgjengelige for resten av prosjektet, skal jeg bruke index.d.ts eller bare definere som hvilken som helst annen .ts-fil?

For øyeblikket har jeg en mappe <root>/src/types/index.ts som fungerer, og den kompileres til <root>/dist, hvor <root> inneholder package.json, tsconfig.json, osv. Jeg lurte på om dette er vanlig praksis, eller om jeg skal definere en index.d.ts. Jeg er usikker på bruken av index.d.ts fordi det virker som om det er for når man publiserer .js npm-pakker, mens jeg bare har mitt eget lille prosjekt som kun består av .ts. Hvis jeg også skal bruke index.d.ts, bør det da ligge på nivået <root> eller <root>/src?

Svar #1

Hvis jeg vil ha ett sted å definere typene mine som er tilgjengelige for resten av prosjektet, skal jeg bruke index.d.ts eller bare definere som hvilken som helst annen .ts-fil?

TL;DR: Hvis du har et eksisterende JavaScript-bibliotek, bruker du en .d.ts-fil for å definere typene. Hvis du lager nye typer i prosjektet ditt fra bunnen av, bruker du .ts-filer.

.d.ts-filer er typedefinisjonsfiler. Deres hensikt er å tillate interaksjon med tredjeparts JavaScript-APIer på en sterkt typet måte via TypeScript. Du kan lære mer om disse filene på DefinitelyTyped og søke etter eksisterende definisjoner ved å bruke Microsofts TypeSearch. Hvis du bruker et API som du ikke finner typedefinisjoner for, kan du vurdere å skrive dine egne .d.ts-filer i henhold til Microsofts retningslinjer. Du kan også ta en titt på hvordan du kan lage en .d.ts «typings»-definisjonsfil fra et eksisterende JavaScript-bibliotek.

Jeg vil ha ett sted å definere typene mine tilgjengelig for resten av prosjektet

Du vil kanskje sjekke ut barrels. Barrels er en måte å samle flere moduler på slik at du kan importere innholdet deres med en enkelt uttalelse. Se også: Hva brukes alle index.ts til? Dette gir deg mer fleksibilitet når du strukturerer prosjektet ditt, siden du kan ha flere filer i flere mapper og samle dem for enklere import. Merk at du vil trenge en modulbunter som for eksempel webpack som støtter bruk av barrels.

Også, hvis jeg skal bruke index.d.ts, bør det plasseres på nivået til <root> eller <root>/src?

Dette handler ikke nøyaktig om det er index.d.ts eller index.ts, men om moduloppløsning.

Relaterte artikler