处理TypeScript编译器以获取特定输出

时间:2018-04-19 21:38:13

标签: typescript

TypeScript非常庞大。我遇到的最大问题是编译的javascript代码的输出。

我多年来创建了我的特殊代码风格,并且我不想使用预定义的扩展程序,例如webpackAMDSystem等。在我的脑海中看起来像“嘿,为什么webpack制作如此丑陋的代码并用一千个polyfill重载脚本?”。

我不想使用TypeScript,但我想要干净的代码。代码不适合人类,不能读取,但它在我的大脑中是一种特殊的思想,即“不使用TypeScript,代码将被删除”。

目前,当我设计一个Javascript“类”时,它看起来像这样:

const MyClass = function MyClass() {
    let _whatever = null;

    this.init = function init() {
        _whatever = 1234;
    };

    this.getWatEver = function getWhatEver() {
        return _whatever;
    };

    this.init.apply(this, arguments);
};

new MyClass();

有TypeScript的一些方法,来定义编译器的输出吗?

Webpack for sample将一些不相关的代码放到已编译的源代码中,如

  

Object.defineProperty(exports,“__ myModule”,{value:true});

和其他 - 我想要有质量的代码!

1 个答案:

答案 0 :(得分:1)

编译器输出应该在具有合理占用空间的情况下进行评估时提供预期的符合规范的行为(有一些权衡)。它不一定必须符合开发人员对质量的个人看法,这是主观的。

有许多compiler options可以提供额外的输出。所有这些都用于特定目的,默认情况下不启用那些不重要的选项。

例如,esModuleInterop option improves module interoperability并产生额外的输出;它默认不启用。

这一行

Object.defineProperty(exports, "__esModule", { value: true });

添加了module选项设置为commonjs(ES5目标的默认值),__esModule property对于与CommonJS模块的互操作性至关重要。

如果不通过TypeScript(Webpack,本机ES模块等)处理ES模块,则可以将module选项设置为es6esnext来跳过它。

可以跳过所有与模块相关的输出,module选项设置为none。顾名思义,此选项意味着根本无法使用模块。