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
Dzięki, 'eksport funkcja blah()' składnia jest co szukałem –
Cztery lata później uważam, że byłoby sensowniej, gdyby zamiast tego "eksport" nazwano "publicznym" ... – Loupax