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();
}
- Det virker lidt mærkeligt for mig, at jeg skal bruge
animals.Animals.Elephant(), jeg ville have forventetAnimals.Elephant(). Gør jeg noget forkert, eller er dette den korrekte adfærd? - er det muligt at importere
import animals=require("animals")inde iAnimalPanel-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
