Typescript och löften i IE11
Jag arbetar i Typescript (v2.4.2) och använder Webpack för att kompilera. Allt kompileras utan problem, men när jag kör min kod i IE11 får jag följande fel: 'Promise' är odefinierad.
Här är min tsconfig:
{
"compilerOptions": {
"outDir": "./wwwroot/js",
"sourceMap": true,
"allowJs": true,
"lib": [
"dom",
"es5",
"scripthost",
"es2015.iterable"
],
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"skipDefaultLibCheck": true,
"types": [ "es6-promise" ]
},
"include": [
"./Ts/**/*"
]
}
Här är min webpack-konfiguration:
const path = require('path');
const webpack = require('webpack');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
entry: {
main: "./Ts/main.ts"
},
output: {
filename: "[name].js",
path: path.resolve(__dirname, "wwwroot/js")
},
devtool: "source-map",
resolve: {
extensions: [".ts", ".js"]
},
module: {
rules: [
{ test: /\.ts?$/, loader: "awesome-typescript-loader" },
{ enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: Infinity
})
]
};
Jag förstår att jag behöver någon form av polyfill, men jag är inte säker på vad eller hur jag ska implementera det. Allt jag har sett hittills föreslår vissa polyfills som Promise och Whatwg-Fetch, men varje gång jag lägger till dem får jag kompileringsfel.
Svar #1
Promise stöds inte inbyggt i IE 11 och detta har inget att göra med Typescript (Typescript-bibliotek lägger faktiskt inte till något i koden)
Du kan använda Bluebird som Promise-bibliotek
npm install --save bluebirdInstallera också typer: npm install --save-dev @types/bluebird
import * as Promise from "bluebird"