referanse - Kan du lage Typescript-pakker? Som c# dll-er


Finnes det noen form for begrep om pakking av Typescript-filer for øyeblikket?

En ting jeg finner vanskelig for øyeblikket når jeg prøver å migrere et rent javascript-prosjekt over til typescript er referansene, i noen tilfeller der jeg har komplekse objekter må jeg skrive flere referanseerklæringer som henter filer fra alle steder.

En del av dette skyldes prosjektoppsettet mitt, siden det er ganske stort og modulært, så jeg har et system som dette:

- modules
  |- module1
     |- models
     |- services
     |- controllers
  |- module2
     |- models
     |- services
     |- controllers
  |- core
     |- models
     |- services
        |- data
        |- validation

Det er mye mer, men du skjønner poenget, nå brukes core av hver modul, men med JavaScript forventer jeg bare at det lastes inn under kjøretid, noe som fortsatt må skje, men siden TypeScript-bekymringene egentlig bare er under kompilering, lurte jeg på om det fantes en form for pakking av alle TypeScript-filene til et slags TypeScript-bibliotek eller noe, og så kunne det refereres fra prosjekter i stedet for at module1-modeller refererer til core-modeller osv.

Problemet dreier seg for tiden rundt katalogstrukturene, ettersom navnerommene fungerer fint, men hvis jeg flytter en fil, må jeg gå til hver fil som refererer til den flyttede filen og oppdatere den. Dette er slitsomt, mens hvis det finnes en slags pakkeløsning, kunne jeg bare referere til det én gang når det er outputt, så jeg ikke lenger bekymrer meg om filsystemer og kataloger, jeg bekymrer meg bare om en pakke og navnerom.

Jeg tror mye av dette er veldig likt hvordan C# fungerer, du har et prosjekt som har referanser. Så kan hver fil i det prosjektet bruke hvilken som helst av klassene innenfor referansene, så kodeeksponeringen styres av referanser og navneområder.

Jeg vurderer å la byggeskriptet mitt bare lage en lokal references.ts-fil og bare gå gjennom hver *.ts-fil i den relevante modulen og legge dem inn i én stor fil:

///<reference path="core/models/some-model.ts"/>
///<reference path="core/models/some-model-2.ts"/>
///<reference path="core/services/some-service.ts"/>

som vist ovenfor, deretter bruker du denne referansefilen i alle typescript-filer som krever kjernefiler, så dette fungerer som en slags referanse på prosjektnivå, dette kan bety at noen filer har referanser de ikke trenger, men det er kompileringstid så jeg bryr meg egentlig ikke...

Jeg vil ikke lage min egen løsning på dette problemet hvis det allerede finnes en god måte å gjøre det på, håper det gir mening...

== REDIGER ==

Jeg ville bare legge dette ut her fordi det i mitt tilfelle har spart meg for MASSE tid og også redusert referanse-rotet mitt med rundt 99 %, dette vil derimot ikke være aktuelt for folk som ikke har bygge-skript.

Akkurat nå, forutsatt at du har et byggeskript, tok jeg veien med å ha et trinn i skriptet mitt som gikk gjennom hver eneste fil i en rotkatalog (module1, module2 osv. i dette tilfellet), og det ville deretter generere en local.references.ts i en references-mappe innenfor den katalogen. Deretter har jeg manuelt skrevet en external.references.ts som refererer til eksterne deskriptorer eller andre modulers referanser der det er nødvendig.

Etter at denne delen var ferdig, når jeg kompilerer TypeScript-en min, peker jeg den i utgangspunktet igjen på rotkatalogene og ber den om å kompilere dem alle (*/.ts) til en stor JS-fil (f.eks. module1.js). Nå, fordi dette automatisk vil inkludere de lokale og eksterne referansene, trenger jeg IKKE å legge inn NOEN referansedeklarasjoner i de enkelte klassene.

Så på denne måten, ved å inkludere de lokale og eksterne referansefilene (local.reference.ts, external.reference.ts) i den store behandlingen av filene, trenger du bare å bekymre deg for navnerom, noe som gjør det stort sett som hvordan C# ville fungere.

Hvis du derimot ikke har et build-skript som kan gjøre lokal referansegenerering og kompilering av TypeScript, vil kommentarlinken som er gitt være et godt alternativ.

Svar #1

For øyeblikket finnes det ingen formell prosess for å pakke kildetypecript-filene dine som et ferdigbygd bibliotek slik du beskriver.

Det finnes noen forskjellige løsninger som for øyeblikket brukes, på samme måte som den som er lenket i kommentarene, som lar deg legge alle referansene dine inn i sentrale TypeScript-filer, og deretter bare referere til dem fra dine individuelle skript, eller tilnærmingen du foreslo hvor du gjør den samme typen tilnærming, men i stedet for å skrive det manuelt, får du ditt byggeskript til å generere referansene for deg og får kompilasjonsprosessen til å injisere referansene i stedet for å eksplisitt referere til dem i hver fil.

Etter hvert som Typescript blir mer modent, kan det komme mer formelle måter å gjøre dette på, men for øyeblikket kan du bare velge den løsningen som fungerer best gitt dine verktøy og din tilnærming til utvikling med Typescript.

Relaterte artikler