TypeScript ambientdeklarationer och .d.ts
I TypeScript-dokumentationen om .d.ts-deklarationsfiler verkar alla funktionssignaturer och gränssnitt med mera vara exporterade. Jag är dock bekant med konceptet med ambienta deklarationer i filer utan import eller export, och har i stort sett gjort det som beskrivs i detta StackOverflow-svar för projekt. I mitt fall har jag dock inte använt .d.ts, bara .ts, och det verkar fungera som jag tänkt. Jag har bara en .ts-fil i roten av mitt projekt med en massa gränssnitt och typer som bara ser ut så här
interface BuildContext {
selectedBuild: import('./classes/build').Build
setSelectedBuild: (buildId: number) => void
modifySelectedBuild: (build: import('./classes/build').Build) => void
}
type StatData = {
statId: number,
statName: string,
alias: string | null
}
Att göra importer på det sättet förklarades i svaret jag länkade ovan som ett sätt att hålla deklarationerna ambienta samtidigt som man får åtkomst till definitioner i andra filer. Förutom dessa inline-importer finns det inga importer eller exporter, och jag verkar inte ha några problem. Är .d-delen av .d.ts helt enkelt en namngivningskonvention, eller har den något syfte som jag inte förstår?
Min tsconfig.json om det spelar någon roll:
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": true,
"module": "es6",
"target": "es5",
"jsx": "react",
"allowJs": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"resolveJsonModule": true
}
}