javascript - Använda namnutrymme spritt över flera modulfiler i TypeScript
Jag har börjat arbeta på ett storskaligt TypeScript-projekt.
Redan från början vill jag hålla mina filer organiserade (detta projekt kommer att delas mellan många utvecklare, så ordning är mycket nödvändig).
Jag har försökt använda moduler/namnrymder och dela upp klasser i separata filer för var och en, med en mapp som håller namnrymden.
Filstrukturen är:
app.ts
\Classes
---- \Animals
---- ---- Mammals.ts
---- ---- Reptiles.ts
Jag försöker sedan importera alla filer i det namnområdet i app.ts med något liknande: import * as Animals from "./Classes/Animals"
När det gäller själva namespace-filerna har jag försökt följande, utan framgång:
namespace Animals {
export class Mammals {
constructor() {
}
}
}
och också:
module Animals {
export class Reptiles {
constructor() {
}
}
}
Tyvärr känns sökvägen aldrig igen (eftersom den pekar på en mapp och inte på en enskild fil). Är detta ens möjligt? Att ha alla mina klasser från ett enda namnrymd i en fil skulle resultera i filer som är tusentals rader långa och för det här projektet är det inte hållbart.
Jag har också märkt att TypeScript 1.5 har stöd för tsconfig.json - men att behöva lägga till varje fil manuellt i kartan är ett säkert sätt att introducera problem när utvecklare börjar lägga till klasser.
OBS: Jag använder Visual Studio 2015, TypeScript 1.5 (tror jag, är inte säker på hur man verifierar). Jag har också ES6-stöd aktiverat.
Svar #1
Använd omexportering för att skapa en extern modul som grupperar och exponerar typer från andra moduler:
// Classes/Animals.ts
export * from '.\Animals\Mammals';
export * from '.\Animals\Reptiles';
Importera sedan typerna från den nya modulen som vanligt:
// app.ts
import * as Animals from '.\Classes\Animals'
let dog: Animals.Dog;
let snake: Animals.Snake;
Eller
// app.ts
import { Dog, Snake } from '.\Classes\Animals'
let dog: Dog;
let snake: Snake;
Svar #2
Hittade ett sätt att uppnå ditt mål men inte med nyckelordet namespace.
- Klasserna "Animals", Animal.ts & Mammal.ts & Reptile.ts under namnrymd.
- med index.ts för tunnan.
- animals.ts för namnrymdsgruppering.
Exempelklasser:
index.ts (som fat)
animals.ts (för namnområdesgruppering)
Och här är du med konceptet av namnrymden.




