title: Class constructor cannot be invoked without 'new'
body: <p>Appreciate that this questions has been asked a few times, but almost all the cases that I've encountered have been the ones where someone tried to extend a non-native class. My case is different. I have a very simple base class called <code>CObject</code> which is as follows:</p>
  
  <pre><code>export class CObject extends BaseObject {
      constructor() {
          super();
      }
      static url(path: string): string { return ""; }
      static wssUrl(): string { return ""; }
      static callMethod(method, path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; { return null; }
      static post(path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; {
          return CObject.callMethod('post', path, params, noConvertData);
      }
  
      static put(path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; {
          return CObject.callMethod('put', path, params, noConvertData);
      }
  
      static patch(path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; {
          return CObject.callMethod('patch', path, params, noConvertData);
      }
  
      static get(path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; {
          return CObject.callMethod('get', path, params, noConvertData);
      }
  
      static delete(path: string, params: any, noConvertData?: boolean): Promise&lt;any&gt; {
          return CObject.callMethod('delete', path, params, noConvertData);
      }
  }
  </code></pre>
  
  <p>The entire hierarchy of classes including BaseObject, are just simple Typescript classes. However, when I extend a class from <code>CObject</code> and then try instantiating it, I get this dreaded error (4 days now!). The funny thing is that I can instantiate <code>CObject</code> on it's own without any issues. It's just derived classes that are giving the issue, even empty ones like this:</p>
  
  <pre><code>export class TestClass extends CObject {
      constructor() {
          super();
      }
  }
  </code></pre>
  
  <p>A point to note is that this code is shared between my Server (Node.js) and Client sides. The code works perfectly fine on the server side. No issues whatsoever. 
  I have tried looking at the babel generated code and it's just simple ES6 classes. All other TS generated classes work as fine and everything below <code>CObject</code> fails when it gets to calling the <code>CObject</code> constructor.</p>
  
  <p>My .babelrc is given below:</p>
  
  <pre><code>{
      "presets": [
          "es2015-node5",
          "react",
          "stage-0",
          "stage-1",
          "bluebird"
      ],
      "plugins": [
          "transform-decorators-legacy",
          "react-hot-loader/babel",
          "transform-async-to-bluebird",
          "transform-promise-to-bluebird",
          "transform-runtime",
          [
              "module-alias", 
              [
                  { "src": "./build/Server", "expose": "Server" },
                  { "src": "./build/Shared", "expose": "Shared" },
                  { "src": "./build/Client", "expose": "Client" }
              ]
          ]
      ],
      "compact": "false"
  }`
  </code></pre>
  
  <p>For client side compilation, my awesome-typescript-loader config in tsconfig.json is as follows:</p>
  
  <p><strong>EDIT: I was looking at the wrong ATL config. The full config is as follows:</strong> </p>
  
  <pre><code>"awesomeTypescriptLoaderOptions": {
      "babelrc": true,
      "useBabel": true,
      "useWebpackText": true,
      "useTranspileModule": true,
      "doTypeCheck": true,
      "forkChecker": true,
      "presets": ["env", { "targets": "last 2 versions, ie 11", "modules": false }, { "exclude": ["transform-es2015-classes"] } ],
      "babelOptions": {
          "sourceMaps": true
      },
      "useCache": true
  }
  </code></pre>
  
  <p>Client side webpack config is as follows:</p>
  
  <pre><code>var path = require('path');
  var webpack = require('webpack');
  const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
  
  let outputDir = path.join(__dirname, "..", "dist", "Client");
  console.log(`Output: ${outputDir}`);
  
  module.exports = {
      entry: "./src/Client/Browser/Src/Main.tsx",
      output: {
          filename: "client.js",
          path: outputDir
      },
      target: 'web',
  
      // Enable sourcemaps for debugging webpack's output.
      devtool: "source-map",
  
      resolve: {
          // Add '.ts' and '.tsx' as resolvable extensions.
          extensions: [".ts", ".tsx", ".js", ".json"],
          plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })],
          modules: [
              "./node_modules",
              "./src/Shared",
              "./src/Client"
          ]
      },
  
      module: {
          rules: [
              // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
              { test: /\.tsx?$/, loader: "awesome-typescript-loader" },
  
              // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
              { enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
          ]
      }
  };
  </code></pre>
  
  <p>Any help will be appreciated. Thank you. </p>
  
  <p>Edit: The exact error is:</p>
  
  <pre><code>ConfigSection.ts?26cc:18 Uncaught TypeError: Class constructor CObject cannot be invoked without 'new'
      at new ConfigSection (ConfigSection.ts?26cc:18)
      at Object../src/Shared/Model/Config/ShAlpha.ts (ShAlpha.ts:338)
      at __webpack_require__ (bootstrap:19)
  </code></pre>