title: Resolve "Property does not exist on type 'Vue'" error
body: <p>I am using Typescript with Vuejs to build an application.  I have several stand alone components (.vue) files that I am importing into a Typescript (.ts) file.  In the Typescript file, I am importing Vue from the npm Vue library and then creating a new Vue to display my components.  The error that I am seeing is: </p>
  
  <blockquote>
    <p>Property x does not exist on type 'Vue'</p>
  </blockquote>
  
  <p>My build system is Webpack with tsc.  Why am I getting this error and how can I resolve it? </p>
  
  <h2>main.ts</h2>
  
  <pre><code>import Vue from 'vue';
  import Competency from '../components/competency.vue';
  
  new Vue({
    el: "#app",
    components: {
      'competency': Competency
    },
    data:{
      count: 0
    },
    methods:{
      initialize: function(){
        this.count = count + 1; // Errors here with Property count does not exist on type vue
      }
    }
  })
  </code></pre>
  
  <h2>tsconfig</h2>
  
  <pre><code>{
    "compilerOptions": {
      // "allowJs": true,
      "allowSyntheticDefaultImports": true,
      "experimentalDecorators": true,
      "lib": [
        "es2015",
        "dom",
        "es2015.promise"
      ],
      "module": "es2015",
      "moduleResolution": "node",
      "noEmitOnError": true,
      "noImplicitAny": false,
      //"outDir": "./build/",
      "removeComments": false,
      "sourceMap": true,
      "target": "es5"
  
    },
    "exclude": [
      "./node_modules",
      "wwwroot",
      "./Model"
    ],
    "include": [
      "./CCSEQ",
      "./WebResources"
    ]
  }
  </code></pre>
  
  <h2>webpack.config.js</h2>
  
  <pre><code>const path = require('path');
  const webpack = require('webpack');
  const HtmlWebpackPlugin = require('html-webpack-plugin');
  const CleanWebpackPlugin = require('clean-webpack-plugin');
  
  module.exports = {
      entry: {
          Evaluations: './WebResources/js/main.ts'
      },
      devServer: {
          contentBase: './dist'
      },
      module: {
          rules: [{
                  test: /\.ts$/,
                  exclude: /node_modules|vue\/src/,
                  loader: 'ts-loader',
                  exclude: /node_modules/,
                  options: {
                      appendTsSuffixTo: [/\.vue$/]
                  }
              },
              {
                  test: /\.vue$/,
                  loader: 'vue-loader',
                  options: {
                      esModule: true
                  }
              },
              {
                  test: /\.css$/,
                  use: [
                      'style-loader',
                      'css-loader'
                  ]
              },
              {
                  test: /\.(png|svg|jpg|gif)$/,
                  use: [
                      'file-loader'
                  ]
              },
          ]
      },
      resolve: {
          extensions: [".tsx", ".ts", ".js"],
          alias: {
              'vue$': 'vue/dist/vue.esm.js'
          }
      },
      plugins: [
          new CleanWebpackPlugin(['dist']),
          new HtmlWebpackPlugin({
              filename: 'Evaluations.html',
              template: './WebResources/html/Evaluations.html'
          }), new HtmlWebpackPlugin({
              filename: 'ExpenseUpload.html',
              template: './WebResources/html/ExpenseUpload.html'
          }), new webpack.optimize.CommonsChunkPlugin({
              name: 'WebAPI'
          })
      ],
      output: {
          filename: '[name].bundle.js',
          path: path.resolve(__dirname, 'dist')
      }
  }
  </code></pre>