title: webpack TS2304 Cannot find name 'Map', 'Set', 'Promise'
body: <p>I have the following webpack.config.js</p>
  
  <pre><code>var path = require("path");
  var webpack = require('webpack');
  
  module.exports = {
    entry: {
      'ng2-auto-complete': path.join(__dirname, 'src', 'index.ts')
    },
    resolve: {
      extensions: ['', '.ts', '.js', '.json', '.css', '.html']
    },
    output: {
      path: path.join(__dirname, 'dist'),
      filename: "[name].umd.js",
      library: ["[name]"],
      libraryTarget: "umd"
    },
    externals: [
      /^rxjs\//,    //.... any other way? rx.umd.min.js does work?
      /^@angular\//
    ],
    devtool: 'source-map',
    module: {
      loaders: [
        { // Support for .ts files.
          test: /\.ts$/,
          loaders: ['ts', 'angular2-template-loader'],
          exclude: [/test/, /node_modules\/(?!(ng2-.+))/]
        }
      ]
    }
  };
  </code></pre>
  
  <p>and the following tsconfig.json</p>
  
  <pre><code>{
    "compilerOptions": {
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "node",
      "noEmitHelpers": false,
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": true,
      "pretty": true,
      "allowUnreachableCode": true,
      "allowUnusedLabels": true,
      "noImplicitAny": false,
      "noImplicitReturns": false,
      "noImplicitUseStrict": false,
      "noFallthroughCasesInSwitch": false,
      "allowSyntheticDefaultImports": true,
      "suppressExcessPropertyErrors": true,
      "suppressImplicitAnyIndexErrors": true,
      "outDir": "dist",
      "baseUrl": "src"
    },
    "files": [
      "src/index.ts"
    ],
    "exclude": [
      "node_modules"
    ],
    "compileOnSave": false,
    "buildOnSave": false
  }
  </code></pre>
  
  <p>When I run <code>tsc</code> command as the following, it all works fine.</p>
  
  <pre><code>ng2-auto-complete (master)$ tsc --declaration
  ng2-auto-complete (master)$ 
  </code></pre>
  
  <p>When I run <code>webpack</code> command, it shows typescript compile errors.</p>
  
  <pre><code>ng2-auto-complete (master)$ webpack
  ts-loader: Using typescript@2.0.0 and /Users/allen/github/ng2-auto-complete/tsconfig.json
  Hash: bd6c50e4b9732c3ffa9d
  Version: webpack 1.13.2
  Time: 5041ms
                         Asset     Size  Chunks             Chunk Names
      ng2-auto-complete.umd.js  24.4 kB       0  [emitted]  ng2-auto-complete
  ng2-auto-complete.umd.js.map  28.4 kB       0  [emitted]  ng2-auto-complete
      + 11 hidden modules
  
  ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/dom/dom_renderer.d.ts
  (18,37): error TS2304: Cannot find name 'Map'.
  
  ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/dom/dom_adapter.d.ts
  (96,42): error TS2304: Cannot find name 'Map'.
  
  ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/web_workers/worker/location_providers.d.ts
  (21,86): error TS2304: Cannot find name 'Promise'.
  ...
  ng2-auto-complete (master)$ 
  </code></pre>
  
  <p>I don't know what I am missing for webpack and typescript compilation.</p>
  
  <p><code>node_modules</code> has been excluded in <code>tsconfig.json</code></p>
  
  <p>"exclude": [
      "node_modules"
    ],</p>
  
  <p>and type definitions are there in <code>node_modules</code></p>
  
  <pre><code>  "devDependencies": {
      "@types/core-js": "^0.9.32",
      "@types/node": "^6.0.31"
  </code></pre>
  
  <p>I also tried to use <code>typings.json</code> and typings directory without success.</p>
  
  <pre><code>{
    "globalDependencies": {
      "core-js": "registry:dt/core-js#0.0.0+20160725163759",
      "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
      "node": "registry:dt/node#6.0.0+20160815222444"
    }
  }
  </code></pre>
  
  <p>FYI, versions</p>
  
  <pre><code>$ node --version
  v5.7.1
  $ npm --version
  3.6.0
  $ tsc --version
  Version 2.0.0
  </code></pre>
  
  <p>How do I get rid of TS2304 errors with <code>webpack</code> command?</p>