2013-09-01 43 views
21

jestem po prostu staramy się uzyskać moja głowa wokół maszynopis,Importowanie modułów maszynopis

Say Mam moduł animals.ts tak:

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"); 
     } 
    } 
} 

I chcę używać tego modułu w innym pliku animals_panel.ts:

import animals = require("animals") 

module AnimalPanel { 

    var animal = new animals.Animals.Elephant(); 
    animal.name(); 
} 
  1. wydaje się nieco dziwne dla mnie, że muszę używać animals.Animals.Elephant(), musiałbym oczekiwano Animals.Elephant(). Czy robię coś źle, czy to jest prawidłowe zachowanie?
  2. Czy możliwe jest zaimportowanie import animals = require("animals") do modułu AnimalPanel (pojawiają się błędy, gdy próbuję to zrobić)?
+1

[Dokumentacja do importu] (https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md) –

Odpowiedz

30

Podczas korzystania z modułów zewnętrznych każdy plik jest modułem. Deklarując lokalny wewnętrzny moduł w pliku np. export module Animals { prowadzi do niepotrzebnego podwójnego kierunku.

bym kodować animals.ts jak:

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"); 
    } 
} 

a następnie użyć go jako:

import animals = require("animals") 

module AnimalPanel { 

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

PS: wideo na ten temat modułów wewnętrznych/zewnętrznych maszynopis: http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

+0

Widziałem w kanciastym, że zaimportowali moduł (powiedzmy, ' NgModule) 'następnie powiedzieli' @NgModule ({}) '. Co to znaczy? Mam na myśli '@ NgModule' (Wielkie dzięki) – M98

3

Można użyć 2 typów składni: export/import:

  1. (styl AMD) Require składnia, która obsługiwana w ES5:

    var animals = require("animals");

  2. Zastosowanie import stylu, który rozpoczął suppurts z ES6:

    import { Elephant, Horse } from "animals";

maszynopis obsługuje export = do modeluj tradycyjne CommonJS i AMD przepływ pracy. Więc oba warianty będą działały i sugeruję użyć 2nd, ponieważ jest to potężniejszy mechanizm.

Więcej informacji na ten temat można znaleźć na stronie official the TypeScript Modules web page.

Powiązane problemy