【问题标题】:Compile arrow functions into regular functions with TypeScript使用 TypeScript 将箭头函数编译为常规函数
【发布时间】:2018-03-11 02:57:21
【问题描述】:

一个很简单的问题,但我还没有在任何地方找到答案:是否有一些开关可以让 TypeScript 将箭头函数编译成普通的 JavaScript 函数?

我在我的代码中经常使用它们,我不想重写所有内容。但我最近意识到,IE 不支持它们。

我已经尝试将脚本版本切换到 ES5,但是我的代码将不再编译,因为我也在使用“过滤器”,这似乎不是它的一部分。但是,我不知道这是否会首先完成这项工作。

【问题讨论】:

    标签: javascript typescript arrow-functions


    【解决方案1】:

    如果您只想将箭头函数转换为常规函数并继续编译其余代码,则可以将 target 配置设置为 es5 并将 lib 属性设置为 es6

    "compilerOptions": {
        "target": "es5",
        "lib": ["es6"],
        // ....
    }
    

    这将允许您使用 ES6 功能的代码在面向 ES5 时进行编译。但是您必须确保这些功能(如filter)在运行时可用。如果它们不可用,则会引发运行时异常。

    【讨论】:

    • 感谢您的建议。我相应地更改了我的设置。但是,现在它会抛出 221 个错误,包括“找不到构建:名称”文档“等奇怪的东西。 (从德语翻译)。它也找不到诸如 XMLHttpRequest、导航器甚至 HTMLElement 之类的东西。那里出了什么问题?
    • 如果您正在为浏览器构建,请添加 "lib": ["es6", "dom"]
    • 谢谢。与此同时,我自己已经找到了答案。现在一切正常,即使在 IE 中也是如此。我只需要添加另一个 polyfill。你真的拯救了我的一天!
    【解决方案2】:

    箭头函数是 ES6 的一部分,但您应该能够使用 Babel 将代码转换为 ES5。有一个babel-preset-typescript,您应该可以使用它。

    【讨论】:

    • 感谢您的想法。我已经用@Saravana 的解决方案解决了。
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 2018-06-29
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多