javascript - Kan inte förstå var man ska lagra egna typer i ett typescript-projekt
Typescript är fantastiskt, typer är fantastiska, men det är inte så lätt för vissa scenarier.
Jag har kämpat med TypeScript i några dagar, jag kan inte förstå var jag ska placera mina typer som behöver användas över hela projektet.
Jag vet att typer kan inkluderas i *.ts-filen, och de kommer att tas bort när de kompileras. Men om jag behöver den typen i en annan modul behöver jag importera den med relativ sökväg. Men det verkar fult.. om jag flyttar den filen till en annan plats kommer jag att bryta halva projektet.
Så jag gick med idén att typerna bör vara oberoende av platsen där de används.
Jag har läst om deklarationssammanfogning, och det ser ut som om det är vad jag vill ha.
Mina mål:
Jag vill bygga ett bibliotek (för nodejs) som kommer att användas i ett annat typescript-projekt och (kanske) i ett rent javascript-projekt.
Självklart kommer utdata från mitt bibliotek att vara *.js och *.d.ts-filer. Jag vill inte publicera *.ts-filer eftersom jag vill kompilera dem en gång och de kan användas i ett rent JS-projekt (jag vill inte ta med TypeScript-kompilatorn där)
En fil (modul) innehåller en enda funktion. Den funktionen har input och output. Typer för input och output är skrivna i d.ts-filen
declare namespace library.foo {
type main = () => out
type out = {
name: string
}
}
och bredvid deklarationen placerar jag filen med implementeringen (foo.ts):
createFoo: library.foo.main = () {
return { name: "baz"}
}
Efter att ha kört tsc i ser jag denna utdata för foo.d.ts i dist-mappen:
declare const createFoo: library.foo.main
Min handskrivna deklarationsfil har lämnats i källmappen, och den finns inte i dist-mappen.
Finns det något alternativ i tsc som kommer att skapa en enda deklarationsfil med alla mina typer? Den filen kommer att publiceras med genererade .js-filer och alla .t.ds-filer