Hva er historien for å lage og bruke TypeScript-biblioteker?


Jeg har brukt TypeScript her og der for webapplikasjoner og har referert til offentlige typedefinisjoner gjort tilgjengelig gjennom Definitely Typed, men én ting som alltid har forvirret meg, er hvordan man går frem for å lage gjenbrukbare biblioteker i TypeScript med hensikt å bli brukt av en TypeScript-applikasjon eller et annet bibliotek.

Det meste av veiledning om emnet ser ut til å peke direkte på hvordan man kan lage eller finne typedefinisjoner for biblioteker som opprinnelig er skrevet i JavaScript, men hva med biblioteker skrevet i TypeScript? Det ser ut til at en mekanisme for å dele de resulterende js-filene og en tilsvarende typedefinisjonsfil burde være noe som er vanlig, men jeg har ikke klart å finne noen omtale av at noen prøver å gjøre dette for private eller offentlige biblioteker. Kanskje ser jeg på feil steder? Finnes det en fremgangsmåte for å lage og bruke TypeScript-biblioteker.

Svar #1

For å lage et TS-bibliotek som skal brukes av et TS-prosjekt, trenger du ikke å gjøre så mye.

(Beklager hvis eksemplet er for langt.)

Biblioteket

Forutsatt at kildefilene dine er skrevet i TypeScript, trenger du følgende konfigurasjonsjusteringer:

tsconfig.json

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "module": "commonjs",
    "removeComments": false,
    "sourceMap": true,
    "outDir": "dist/",
    "declaration": true
  },
  "filesGlob": [
    "**/*.ts",
    "!node_modules/**/*"
  ],
  "exclude": [
    "node_modules",
    "typings/global",
    "typings/global.d.ts"
  ],
  "compileOnSave": true
}

Det viktige her er i utgangspunktet declarations: true, som forteller TS-kompilatoren å generere d.ts-filene.

package.json

{
  "name": "my-typescript-library",
  "description": "...",
  "version": "1.0.0",
  "main": "./dist/my.service.js",
  "typings": "./dist/my.service.d.ts",
  "license": "ISC",
  "dependencies": {
    ...
  },
  "devDependencies": {
    "typescript": "^1.8.10",
    "typings":"^1.0.4",
    ...
  }
}

De viktige tingene her er "main" og "typings" som er inngangspunktet for tjenesten i biblioteket. Så hvis noen skulle require("my-typescript-library"), vil filen som er oppført her bli brukt. Feltet typings er likt, men hjelper selvfølgelig TypeScript.

Du laster deretter opp dette biblioteket til Github, eller Bitbucket, eller hvor som helst.

Forbrukeren

Du trenger ikke mye her.

package.json

Legg til en avhengighet i biblioteket ditt:

{
  ...,
  "dependencies": {
    "my-typescript-library": "git+ssh://bitbucket.org/you/my-typescript-library",
    ...
  }
}

Du vil trenge en SSH-nøkkel i dette eksemplet.

Så importerer du bare biblioteket.

min_fil.ts

import {MyService} from "my-typescript-library";

Så der har du det, et TypeScript-bibliotek som brukes i en TypeScript-app. Håper det er et tilstrekkelig svar (og klart nok), ellers er det bare å sende meg en melding.

Svar #2

vel, jeg tror at du kan bruke moduler til dette formålet, moduler er som namespace i c#, f.eks.

//File Utils.ts
module Utils
{
    export class UtilsClass
    {
        do(param: string)
        {
            //do something
        }
    }
}

//Another ts file
var formatter = new Utils.UtilsClass();
formatter.do("str");

Vennlig hilsen,

Relaterte artikler