Repository: TypeScript
Issue: Code generated by Webpack shows error in `exports` parameters in module lambdas as if they were a conflicting global `exports`
Labels: Suggestion,Awaiting More Feedback

### 🔎 Search Terms

webpack Cannot redeclare exported variable __esModule ts2323 ts 2323 ts(2323)

### 🕗 Version & Regression Information

- This is the behavior in every version I tried, and I reviewed the FAQ for entries about Common "Bugs" That Aren't Bugs

### ⏯ Playground Link

https://www.typescriptlang.org/play/?strict=false&noImplicitAny=false&strictPropertyInitialization=false&strictBindCallApply=false&alwaysStrict=false&esModuleInterop=false&declaration=false&target=99&jsx=0&module=0&noFallthroughCasesInSwitch=true&ts=5.5.3&filetype=js#code/PQKj+ACAKaEpIF4B8kDelhQO4FMBGADgIYDGA1gEID21ALgM50BOxhAUKOGFAJABuxZpAD6IvETLkRAW2oATAK4AbXAzFIYAbU4hIABkghgunjGhjFAO0UNc88QRIVZClbgA0kXAA9C1ZkYvMQlnaWZcAEdFAEsIsQQUdHZ2ACJbXEgmZhjSOlSAbhSAeXwAK1w8gDp5XAAzGKtcAAVmakJcQIBPaF9-QIYvVLE1AFk3VVSvaAxBZUVcAC5IFgXIAF84OCKsSC1SBUzqOsg5JVUDAF0UrmMNuA9dSABGIxNbqFhLGzsHUKlXOdPN4-AFGIlUGgUuk7FkWLl8kV2KUKtVag0mq12p06D0+mDBpBhiIxhNcFMYLNiPMlitmGtNttOFB9odIMdTmSXl5cHRSFUBdcbhB7o9biLeJcmeLuLK5fKFYqlcqFe85XxdgAVAAWmTO7kgpDIutM3D4gmEIScAP1qhERtIuo0iHQ6x26sgvFNEq1usgEWicUydWseRi1Cs3rMvBDVjDEdEjkkLgDsXiImgttwAEl5AgoTK7rxeLsAMK6iiQGInLNVhhVqyG424KNFgRCJuO+zjIGaK3J6RZ+3NsRaLO5y7u2V8XjVmAO3XyHsGgCEiBd1nRjXs+dbM94EToimYjYX3bJVXxAynZs9vHWe7vZYixDomWIkCa2E5vegxCs8iQIQih0FWoGNHQ1ArH6Z5wI+xYWj+Bouv2YSAu4w5dqO47yJcmgFh6xYllAVhQVmVQxIBTT2PY8HFrspFIaoVTKNQxC1FRuA0fIdG8FejDLGgD6FjObrwXRuwAKI+JUIGZHQfq1rG8aRiJd6oTaZLqCIY5khOmZkl45H8YSGkplEaa4AkN4ShJUAAEq8sejYKZkJnsicrlMS2anFoezneZeoLXvBwmEa2KqRVF0Uqmq06evBuxMEIR4cL5uwADJsYBuBWCwXTeZA-6Af5J4gv0jCJVAOoxPWuX5YVtX+vUnS5aQ9iQPgBX0LqwhZvWDBQTEoFGlYADkoH4JkjTKNuPG+YhZnSCZzqJv85mBum0D6NKhGLUmaH8SIdBCAA5ryq0mTZ0Z1AE0CITEDZrdaLgrSICBLSSwV0MdZ0XTpMR4ShB0Am9WiA9dRbVhYIOvd92lVCMDDLqoCAopUdA1PU25Yh03Qw+ty3fb9zDnT9IhDEjKPkl4VI0ssqyZJskN8I+mzwOwRRAA

### 💻 Code

```js
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ([
/* 0 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
// [code of module 0]

/***/ }),
/* 1 */
/***/ ((__unused_webpack_module, exports) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
// [code of module 1, etc...]


/***/ }),
/******/ 	]);
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module is referenced by other modules so it can't be inlined
/******/ 	var __webpack_exports__ = __webpack_require__(0);
/******/ 	var __webpack_export_target__ = exports;
/******/ 	for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
/******/ 	if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
/******/ 	
/******/ })()
;

```


### 🙁 Actual behavior

Error TS2323 on every line below:
> Cannot redeclare exported variable '__esModule'.
```js
Object.defineProperty(exports, "__esModule", ({ value: true }));
```
It's ignoring the fact `exports` is a lambda parameter, which should not make it conflict with the ones in other lambdas as if it's the same global `exports` object. It's like it's treating it as a keyword?
In fact, if you were to rename all those parameters to something else is has no errors (at least in VSCode, TS v5.5.3).

### 🙂 Expected behavior

No errors should be shown.
Lambda parameter named `exports` should be treated as just a parameter, not special.
Or at least should be scoped so it doesn't conflict with the other lambdas (which are the way webpack packs modules).

### Additional information about the issue

In case it's relevant, here's part of the `webpack.config.js`.
Use case is bundling a VSCode extension (with multiple modules) for the Web, then inspecting the generated code.
```js
/** @type import('webpack').Configuration */ module.exports = {
  mode: 'none',
  target: 'webworker',
  output: {
    //...
    libraryTarget: 'commonjs',
  },
  resolve: {
    mainFields: ['browser', 'module', 'main'],
    extensions: ['.ts', '.js'],
    //...
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        exclude: /\bnode_modules\b/,
        use: [
          {
            loader: 'ts-loader',
            //...
          }
        ]
      }
    ]
  },
  externals: {
    vscode: 'commonjs vscode',
  },
  performance: {
    hints: false,
  },
  devtool: 'nosources-source-map',
  //...
};
```