javascript - Compilarea spațiilor de nume TypeScript cu mai puțină duplicare a codului
Folosesc gulp-typescript pentru a transpila fișierele mele TypeScript în JS. Și totul funcționează bine, doar că sunt surprins că namespace-urile sunt duplicate pentru fiecare fișier în fișierul .js rezultat. Ia acest exemplu:
LettersOnlyValidator.ts:
namespace Validation {
const lettersRegexp = /^[A-Za-z]+$/;
export class LettersOnlyValidator implements StringValidator {
isAcceptable(s: string) {
return lettersRegexp.test(s);
}
}
}
ZipCodeValidator.ts:
namespace Validation {
const numberRegexp = /^[0-9]+$/;
export class ZipCodeValidator implements StringValidator {
isAcceptable(s: string) {
return s.length === 5 && numberRegexp.test(s);
}
}
}
Se compilează în app.js:
var Validation;
(function (Validation) {
const lettersRegexp = /^[A-Za-z]+$/;
class LettersOnlyValidator {
isAcceptable(s) {
return lettersRegexp.test(s);
}
}
Validation.LettersOnlyValidator = LettersOnlyValidator;
})(Validation || (Validation = {}));
var Validation;
(function (Validation) {
const numberRegexp = /^[0-9]+$/;
class ZipCodeValidator {
isAcceptable(s) {
return s.length === 5 && numberRegexp.test(s);
}
}
Validation.ZipCodeValidator = ZipCodeValidator;
})(Validation || (Validation = {}));
Acesta este rezultatul meu așteptat:
var Validation;
(function (Validation) {
const lettersRegexp = /^[A-Za-z]+$/;
class LettersOnlyValidator {
isAcceptable(s) {
return lettersRegexp.test(s);
}
}
const numberRegexp = /^[0-9]+$/;
class ZipCodeValidator {
isAcceptable(s) {
return s.length === 5 && numberRegexp.test(s);
}
}
Validation.LettersOnlyValidator = LettersOnlyValidator;
})(Validation || (Validation = {}));
Există opțiuni de compilare pentru a optimiza asta? Nu am putut găsi nimic în documentație: https://www.typescriptlang.org/docs/handbook/compiler-options.html
Sau există un motiv tehnic, de exemplu un conflict de domeniu pentru acesta?