Hvordan å "importere" et navnerom i en TypeScript-definisjonsfil


Type-definisjonen for moment.js er erklært innenfor et namespace:

declare namespace moment {
  interface Moment {
...

For å deklarere et objekt av typen Moment, gjør jeg:

let myMoment: moment.Moment;

Mitt spørsmål er - finnes det en måte å "importere" moment-navnerommet på, slik at jeg kan unngå å gjenta det hele tiden? Veldig likt C#.

Svar #1

Jeg vet ikke om det finnes en måte å «importere» et helt namespace på, men du kan gjøre det element for element på denne måten:

type Moment = moment.Moment

Svar #2

Hvis du kan bruke ES6-stil imports, kan du enkelt gjøre noe som følgende.

import { Moment, Duration, OrAnyOtherExportedMemberFromMoment } from "moment";
let myMoment: Moment;
let myDuration: Duration;

Hvis du trenger dette i dine typdefinisjonsfiler fra kildefilen din:

Med compilerOptions.declaration satt til true i din tsconfig.json, og ved å bruke gulp-typescript (søk etter tsResult.dts.pipe), kan du generere typereduksjoner fra kildefilene dine.

Håper dette hjelper.

Relaterte artikler