Skombinujte externé moduly s internými modulmi v TypeScript 0.9
Chcem zabudovať koreňové menné priestory do zostáv, ktoré sú externými modulmi.
Napríklad:
// File structure (every file is class or interface export)
Deferred/Deferred.ts
Deferred/Promise.ts
WebApp/ClassOne.ts
WebApp/ClassTwo.ts
Chcem to zostaviť na:
Deferred.js
WebApp.js
A oba tieto súbory sú moduly AMD, takže v Deferred.js (a WebApp.js) je niečo ako:
define("Deferred", [], function() {
(function(Deferred){
// Here is a definition of a module with submodules
})(var Deferred || (Deferred = {}));
return Deferred;
});
Ako to urobiť?
Odpoveď č. 1
Vytvorte súborovú štruktúru ako:
// File structure (every file is class or interface export)
Deferred/Deferred.ts
Deferred/Promise.ts
Deferred/index.ts
WebApp/ClassOne.ts
WebApp/ClassTwo.ts
WebApp/index.ts
Kde každý súbor index.ts importuje a znovu exportuje všetko z toho priečinka. napr. Deferred/index.ts:
import deferred_file = require('./Deferred');
export var deferred = deferred_file;
import promise_file = require('./Promise');
export var promise = promise_file;
Potom skompilujte tento index.ts s príznakom amd a minimalizujte pomocou r.js: http://requirejs.org/docs/optimization.html
PS: V grunt-ts sa pracuje na vytváraní týchto súborov index.ts pre vás: https://github.com/grunt-ts/grunt-ts/pull/69, na ktorých môžete pracovať, ak chcete.
