title: Typescript + Express : Type 'typeof e' has no compatible call signatures
body: <p>I'm trying to build an application using typescript , express . but i'm getting this error : 
  <code>Cannot invoke an expression whose type lacks a call signature. Type 'typeof e' has no compatible call signatures</code>(in app.ts where express() is called )</p>
  
  <p>I'm using webpack here to help with my development.</p>
  
  <p>My Package.json : </p>
  
  <pre><code>"scripts" :{
      "build": "webpack" 
   },
   "dependencies": {
      "body-parser": "^1.18.3",
      "dotenv": "^6.1.0",
      "jsonwebtoken": "^8.3.0",
      "nodemon": "^1.18.5"
    },
    "devDependencies": {
      "@types/body-parser": "^1.17.0",
      "@types/dotenv": "^4.0.3",
      "@types/express": "^4.16.0",
      "clean-webpack-plugin": "^0.1.19",
      "ts-loader": "^5.3.0",
      "ts-node": "^7.0.1",
      "typescript": "^3.1.6",
      "webpack": "^4.24.0",
      "webpack-cli": "^3.1.2"
    }
  </code></pre>
  
  <p>my <code>webpack.confg.js</code> : </p>
  
  <pre><code>var path = require("path");
  const CleanWebpackPlugin = require("clean-webpack-plugin");
  
  var fs = require("fs");
  var nodeModules = {};
  fs.readdirSync("node_modules")
    .filter(function(x) {
      return [".bin"].indexOf(x) === -1;
    })
    .forEach(function(mod) {
      nodeModules[mod] = "commonjs " + mod;
    });
  
  module.exports = {
    entry: "./src/index.ts",
  
    plugins: [new CleanWebpackPlugin(["./dist"])],
    output: {
      filename: "index.js",
      path: path.resolve(__dirname, "dist")
    },
    module: {
      rules: [
        //all files with .ts extention will be handled y ts-loader
        { test: /\.ts$/, loader: "ts-loader" }
      ]
    },
    target: "node",
    externals: nodeModules
  };
  </code></pre>
  
  <p>my <code>app.ts</code> : </p>
  
  <pre><code>import * as express from "express";
  import * as bodyParser from "body-parser";
  
  class App {
    public app: express.Application;
    constructor() {
      this.app = express();
      this.config();
    }
  
    private config(): void {
      //add support for application/json type for data
      this.app.use(bodyParser.json());
  
      //support application/x-www-form-urlencoded post data
      this.app.use(bodyParser.urlencoded({ extended: false }));
    }
  }
  
  export default new App().app;
  </code></pre>
  
  <p>I'm running <code>npm run build</code> and my build fails with the error stated . 
  tried searching for solution in a few blogs and none have mentioned tanything about this error .I manged to add <code>express.Application</code> as type for <code>app</code> in side <code>app.ts</code>
  What am i doing wrong ?  Is it because of the configuration of webpack ?</p>
  
  <p>Any help appreciated</p>