Насколько я знаю, typescript пока не поддерживает объединение внешних модулей. Из их вики на codeplex:
TypeScript имеет взаимно однозначное соответствие между исходными файлами внешних модулей и созданными ими JS-файлами. Одним из последствий этого является то, что невозможно использовать параметр компилятора --out для объединения нескольких исходных файлов внешних модулей в один файл JavaScript.
Однако вы можете пойти на хитрость, используя внутренние модули в машинописном тексте, так как компилятор tsc имеет возможность скомпилировать их в один файл, а затем вы можете просто добавить еще один файл с директивой module.exports
для все пространство имен, чтобы сделать его модулем CommonJS.
Вот пошаговый пример. Допустим, у вас есть следующие внутренние модули, разбитые на три файла:
Validation.ts:
module Validation {
export interface StringValidator {
isAcceptable(s: string): boolean;
}
}
ZipCodeValidator.ts
/// <reference path="Validation.ts" />
module Validation {
var numberRegexp = /^[0-9]+$/;
export class ZipCodeValidator implements StringValidator {
isAcceptable(s: string) {
return s.length === 5 && numberRegexp.test(s);
}
}
}
LettersOnlyValidator.ts
/// <reference path="Validation.ts" />
module Validation {
var lettersRegexp = /^[A-Za-z]+$/;
export class LettersOnlyValidator implements StringValidator {
isAcceptable(s: string) {
return lettersRegexp.test(s);
}
}
}
Если вы скомпилируете их с параметром --out в tsc compiler
, вы сможете объединить их в один файл. Однако это не делает их модулем CommonJS. Чтобы экспортировать их, вы используете трюк, чтобы добавить еще один файл ts с именем ValidationExport.ts, содержащий директиву экспорта для пространства имен:
var module: any = <any>module;
module.exports = Validation;
Затем вы можете запустить команду tsc, чтобы скомпилировать все в один файл с именем «validationmodule.js»:
tsc --out validationmodule.js Validation.ts ZipCodeValidator.ts LettersOnlyValidator.ts ValidationExport.ts
Результатом является модуль CommonJS, который вы можете использовать в Node.js:
var Validation = require("./validationmodule");
var zipCodeValidator = new Validation.ZipCodeValidator();
var lettersOnylValidator = new Validation.LettersOnlyValidator();
console.log(zipCodeValidator.isAcceptable("16211"));
console.log(lettersOnylValidator.isAcceptable("5555"));
person
Faris Zacina
schedule
29.10.2014