使用TypeScript时,es6的Map()不能编译成es5。

8

我刚在一个项目中第一次使用Typescript。

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

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

目前阶段有任何建议将不胜感激。


2
TypeScript不会将仅适用于ES6的类型转换为早期版本的JavaScript;它将带类型的JavaScript转换为普通JavaScript。因此,你的问题实际上与TypeScript没有太大关系。 - JLRishe
使用一个 polyfill。它不会完全兼容,但你应该能够使用它。 - Ben
谢谢您的快速回复。我现在明白了。 - fu8ar
2个回答

12

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

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

我的前两个想法是:


非常感谢。我会尝试使用es6-map模块。再次感谢。 - fu8ar
9
尽管事实上Map是ES6的一部分而非TypeScript,但在这个语境下这种说法有些误导人。TypeScript确实将其他ES6+特性编译成ES5(例如类、箭头函数和异步函数)。 - Frxstrem

3

您需要使用 shim 或 polyfill。

我曾经使用过 es6-map,它非常好用。

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

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

你将能够使用ES6的Map,强类型化,你的代码将被编译成ES5,并通过shim在旧浏览器中得到支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接