【问题标题】:es6 Map() doesn't compile to es5 when using Typescript使用 Typescript 时,es6 Map() 无法编译为 es5
【发布时间】:2016-11-04 16:41:48
【问题描述】:

我刚刚开始在项目中使用 Typescript。

我真的很想用 Map() 来组织一个小的键值对数组。

不幸的是,当 typescript 被编译(使用 gulp 和 gulp-typescript)到 vanilla 时,ES5 JavaScript,Map() 仍然存在。我需要这段代码才能在 ie9 中工作。

在此阶段的任何建议将不胜感激。

【问题讨论】:

  • TypeScript 不会将仅限 ES6 的类型转换为早期版本的 JavaScript;它将类型化的 JavaScript 转换为普通的 JavaScript。所以你的问题与 TypeScript 并没有太大关系。
  • 使用 polyfil。它不会是 100%,但您应该能够使用它。
  • 感谢您的快速回复。我现在明白了。

标签: typescript gulp ecmascript-6


【解决方案1】:

Map 是 ES6 的一部分,与 TypeScript 无关。

如果你想在 ES5 环境中使用 Map,你应该包含一个适当的 polyfill。

我的前两个想法是:

【讨论】:

  • 非常感谢。我会试试 es6-map 模块。再次感谢
  • Map 是 ES6 而不是 TypeScript 的一部分这一事实虽然是真的,但在这种情况下有点误导。 TypeScript 确实将其他 ES6+ 特性编译为 ES5(例如类、箭头函数和异步函数)。
【解决方案2】:

你需要一个 shim 或 polyfill。

我用过es6-map 一次,非常好。

不幸的是,它没有 TypeScript 定义,所以我的建议是直接从 CDN 使用 es6-shim 并将其添加到您的 tsconfig.json

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

您将能够使用强类型的 ES6 Map,您的代码将被编译为 ES5,旧浏览器将通过 shim 支持它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2017-08-07
    • 2021-12-18
    • 2018-05-29
    • 2019-03-21
    相关资源
    最近更新 更多