javascript - 为什么我的 typescript 文件无法使用 gulp typescript 正确生成为 js?

标签 javascript typescript gulp

我正在尝试使用 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/

相关文章:

Gulp Sass 与 errLogToConsole : true still stopping my other watch tasks

javascript - gulp 任务 - 连接由另一个 gulp 任务创建的文件

javascript - 使用 jquery 显示多输入类型文件的错误消息

javascript - 拖动一个元素但放下其他元素的数组

angular - 存在性能问题的选项卡内容

reactjs - 找不到模块 : Can't resolve 'react-leaflet'

javascript - 尝试在 Windows 上使用 Gulp 和 Babel fork Node.js 进程

javascript - fileReader.readAsText() 抛出 'FileReader' : parameter 1 is not of type 'Blob'

javascript - 无法使用 AngularJS 在下拉列表中设置所选选项

reactjs - 使用 docker compose 运行 TypeScript React 应用程序时出错