es6 Map() doesn't compile to es5 when using Typescript

泄露秘密 提交于 2019-12-01 21:28:53

问题


I've just started using Typescript in a project for the first time.

I really want to use Map() to organize a small array of key value pairs.

Unfortunately when the typescript is compiled (using gulp and gulp-typescript) to vanilla, ES5 JavaScript, Map() still exists. I need this code to work in ie9.

Any advice at this stage would be greatly appreciated.


回答1:


Map is a part of ES6 and have nothing to do with TypeScript.

If you want tot use Map in ES5 environment you should include an appropriate polyfill.

My first two thoughts are:

  • es6-map module
  • core-js/es6/map from core-js generic ES6 polyfill library



回答2:


You'll need a shim or a polyfill.

I've used es6-map once and it's pretty good.

Unfortunately there is no TypeScript definitions for it, so my suggestion would be using es6-shim directly from a CDN and add this to your tsconfig.json.

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

You'll be able to use ES6 Map strongly typed, your code will be compiled down to ES5 and old browsers would support it through the shim.



来源:https://stackoverflow.com/questions/40427777/es6-map-doesnt-compile-to-es5-when-using-typescript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!