我正在使用gulp-typescript将我的打字稿文件转换为JS。这一切都运行正常,但我很惊讶结果.js文件中的每个文件都复制了名称空间。 举个例子:
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);
}
}
}
汇编为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 = {}));
这是我的预期结果:
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 = {}));
有优化的编译选项吗?我在文档中找不到任何内容:https://www.typescriptlang.org/docs/handbook/compiler-options.html
还是有技术原因。例如范围冲突吗?