Import af TypeScript-moduler


Jeg prøver bare at forstå TypeScript.

Sig, at jeg har en modul animals.ts som dette:

export module Animals {

    export interface Animal {
        name(): void;
    }

    export class Elephant implements Animal {

        constructor() {

        } 

        public name() {
            console.log("Elephant");
        }
    }

    export class Horse implements Animal {

        constructor() {

        }

        public name() {
            console.log("Horse");
        }
    }
}

Og jeg vil bruge dette modul i en anden fil animals_panel.ts:

import animals = require("animals")

module AnimalPanel {

    var animal = new animals.Animals.Elephant();
    animal.name();
}
  1. Det virker lidt mærkeligt for mig, at jeg skal bruge animals.Animals.Elephant(), jeg ville have forventet Animals.Elephant(). Gør jeg noget forkert, eller er dette den korrekte adfærd?
  2. er det muligt at importere import animals=require("animals") inde i AnimalPanel-modulet (jeg får fejl, når jeg prøver at gøre dette)?

Svar #1

Når du bruger eksterne moduler, er hver fil et modul. Så at erklære et lokalt internt modul inden for en fil f.eks. export module Animals { fører til unødvendig dobbelt indirektion.

Jeg ville kode animals.ts som:

export interface Animal {
    name(): void;
}

export class Elephant implements Animal {

    constructor() {

    } 

    public name() {
        console.log("Elephant");
    }
}

export class Horse implements Animal {

    constructor() {

    }

    public name() {
        console.log("Horse");
    }
}

Og brug det derefter som :

import animals = require("animals")

module AnimalPanel {

    var animal = new animals.Elephant();
    animal.name();
}

PS: en video om dette emne om interne/eksterne TypeScript-moduler: http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

Relaterede artikler