sysgears/spinjs

Typescript target ES2016 doesn't work in IE11

Closed this issue · 5 comments

Hi, I have a little problem. I have to have in tsconfig target es2016 (because of some plugin) but IE 11 doesn't support es2016 features. So I have a question if It's possible to somehowe transpile from typescript es2016 via babel back to es5. Thanks

@wojcikiewiczm TypeScript compiler transpiles code to the target that you specify. You kinda contradict youself, if you need es5 target, specify this in tsconfig.json, if you sepcified es2016 as a target, no wonder that you end up with transpiled code for es2016

@wojcikiewiczm Specify "lib": ["es2016"] and "target": "es5"in tsconfig.json if you want to transpile to es5 but use features of es2016

@Vlasenko Thanks but that's the problem. I have to compile typescript to ES6 (ES2015) because of Classes on backend (https://github.com/RobinBuschmann/sequelize-typescript) but I need to have frontend as ES5 beacuse of IE 11 (IE 11 doesn't know classes). I'm using your apollo starter kit and I think I need something like TS -> ES6 -> Babel -> ES5. It's possible somehow? I tried to setup babel rc in many ways but none of them worked. And I think that it's beacuse now it works like this Babel -> ES5 -> TS -> ES6. Thanks

@Vlasenko Ok I managed to fix it! Solution was simple. Just replace ts-loader with awesome-typescript-loader (So just uninstall ts-loader and install recent awesome-typescript-loader) and then just place into tsconfig.json this ->

    "useBabel": true,
    "babelOptions": {
      "babelrc": false,
      "presets": [
        [
          "@babel/preset-env",
          {
            "targets": "last 2 versions, ie 11",
            "modules": false
          }
        ]
      ]
    },
    "babelCore": "@babel/core",
    "reportFiles": [
      "**/*.ts",
      "**/*.tsx"
    ]
  }

This will transpile ES6 back to ES5

@wojcikiewiczm Great, thanks for letting know!