2013-03-27 18 views

Odpowiedz

36

Trudno powiedzieć, w co się dzieje w tym przykładzie. exports = dotyczy eksportowania z zewnętrznych modułów, ale połączony przykładowy kod to wewnętrzny moduł.

Praktyczna zasada: pisząc module foo { ... }, piszesz moduł wewnętrzny; jeśli piszesz export something something na najwyższym poziomie w pliku, piszesz moduł zewnętrzny. To dość rzadkie, że faktycznie piszesz export module foo na najwyższym poziomie (od tego czasu będziesz podwójnie zagnieżdżać nazwę), a jeszcze rzadsze jest pisanie module foo w pliku z eksportem na najwyższym poziomie (ponieważ foo nie byłby widoczny z zewnątrz).

następujące rzeczy sensu (każdy scenariusz wyznaczają reguły poziomy):


// An internal module named SayHi with an exported function 'foo' 
module SayHi { 
    export function foo() { 
     console.log("Hi"); 
    } 

    export class bar { } 
} 

// N.B. this line could be in another file that has a 
// <reference> tag to the file that has 'module SayHi' in it 
SayHi.foo(); 
var b = new SayHi.bar(); 

file1.ts

// This *file* is an external module because it has a top-level 'export' 
export function foo() { 
    console.log('hi'); 
} 

export class bar { } 

file2.ts

// This file is also an external module because it has an 'import' declaration 
import f1 = module('file1'); 
f1.foo(); 
var b = new f1.bar(); 

file1.ts

// This will only work in 0.9.0+. This file is an external 
// module because it has a top-level 'export' 
function f() { } 
function g() { } 
export = { alpha: f, beta: g }; 

file2.ts

// This file is also an external module because it has an 'import' declaration 
import f1 = require('file1'); 
f1.alpha(); // invokes f 
f1.beta(); // invokes g 
+2

Dzięki, 'eksport funkcja blah()' składnia jest co szukałem –

+3

Cztery lata później uważam, że byłoby sensowniej, gdyby zamiast tego "eksport" nazwano "publicznym" ... – Loupax