2013-09-01 62 views
21

Tôi chỉ cố gắng để có được đầu của tôi xung quanh nguyên cảo,Nhập module nguyên cảo

Nói rằng tôi có một mô-đun animals.ts như thế này:

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

Và tôi muốn sử dụng mô-đun này trong một tập tin animals_panel.ts:

import animals = require("animals") 

module AnimalPanel { 

    var animal = new animals.Animals.Elephant(); 
    animal.name(); 
} 
  1. Nó có vẻ hơi lạ với tôi rằng tôi phải sử dụng animals.Animals.Elephant(), tôi sẽ phải dự kiến ​​Animals.Elephant(). Tôi có làm điều gì sai trái hay đây là hành vi đúng không?
  2. có thể nhập import animals = require("animals") bên trong mô-đun AnimalPanel (Tôi gặp lỗi khi cố gắng thực hiện việc này) không?
+1

[Tài liệu để nhập] (https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md) –

Trả lời

30

Khi bạn đang sử dụng mô-đun bên ngoài, mỗi tệp là một mô-đun. Vì vậy, khai báo một mô-đun nội bộ cục bộ trong một tệp, ví dụ: export module Animals { dẫn đến không cần thiết đôi indirection.

tôi sẽ mã animals.ts như:

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

Và sau đó sử dụng nó như là:

import animals = require("animals") 

module AnimalPanel { 

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

PS: một đoạn video về chủ đề này của module nguyên cảo bên ngoài/bên trong: http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

+0

Tôi thấy ở góc cạnh mà họ đã nhập một mô-đun (giả sử ' NgModule) 'sau đó họ nói' @NgModule ({}) '. Nó có nghĩa là gì? Ý tôi là 'NgModule' (Cảm ơn rất nhiều) – M98

3

Bạn có thể sử dụng 2 loại cú pháp export/import:

  1. (AMD phong cách) Require cú pháp mà hỗ trợ trong ES5:

    var animals = require("animals");

  2. Sử dụng import phong cách mà bắt đầu suppurts từ ES6:

    import { Elephant, Horse } from "animals";

nguyên cảo hỗ trợ export = để mô hình truyền thống CommonJSAMD quy trình làm việc. Vì vậy, cả hai biến thể sẽ hoạt động và tôi đề nghị sử dụng thứ 2 vì nó có cơ chế mạnh hơn.

Thông tin chi tiết về nó có thể được tìm thấy trên official the TypeScript Modules web page.

Các vấn đề liên quan