我正在尝试使用 gulp-typescript 将 typescript 文件转换为 js。
好像没翻译。
吞下文件:
var ts = require('gulp-typescript');
gulp.task('tsToJs', function () {
return gulp.src('./config.ts')
.pipe(ts({
moduleResolution: 'node',
target:'es5',
allowJs:true
//out: 'config.js'
}))
.pipe(gulp.dest('./'));
});
配置.ts:
class Config{
env:{
readonly live: '.co.uk',
readonly dev: '.dev.co.uk',
readonly qa: 'qa.co.uk'
};
};
export = new Config;
似乎被转换成这样: (类内数据丢失了?) conf.js:
"use strict";
var Config = (function () {
function Config() {
}
return Config;
}());
;
module.exports = new Config;
最佳答案
您将 env
属性声明为匿名类型,而不是使用具有属性的对象对其进行初始化。将 :
更改为 =
:
class Config{
env = {
// ^-------------------------------------- here
readonly live: '.co.uk',
readonly dev: '.dev.co.uk',
readonly qa: 'qa.co.uk'
};
}
但请注意,the playground says你不能在那里使用readonly
。我在 TypeScript 手册中找不到任何在简单对象属性上使用 readonly
的示例。 (尽管从概念上讲这是合理的。)您可能需要更守旧一点:
class Config{
env = Object.create(Object.prototype, {
live: {value: '.co.uk', enumerable: true, configurable: true},
dev: {value: '.dev.co.uk', enumerable: true, configurable: true},
qa: {value: 'qa.co.uk', enumerable: true, configurable: true}
});
}
(当然,如果您不希望属性可枚举或可配置,则将其保留。它们将不可写,因为所有这些标志的默认值为 false
.)
旁注:由于这是一个声明,而不是表达式,因此后面没有 ;
。 ;
是语句终止符;声明是自动终止的。
关于javascript - 为什么我的 typescript 文件无法使用 gulp typescript 正确生成为 js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42021293/