<h3 dir="auto">Version</h3>
<p dir="auto">Vue: 2.6.10<br>
TS: 3.3.4000 and 3.4.5</p>
<h3 dir="auto">Reproduction link</h3>
<p dir="auto"><a href="https://github.com/octref/vue-prop-type-error">https://github.com/octref/vue-prop-type-error</a></p>
<h3 dir="auto">Steps to reproduce</h3>
<ul dir="auto">
<li><code class="notranslate">git clone https://github.com/octref/vue-prop-type-error &amp;&amp; cd vue-prop-type-error</code></li>
<li><code class="notranslate">yarn</code></li>
<li><code class="notranslate">yarn compile</code></li>
</ul>
<h3 dir="auto">What is expected?</h3>
<p dir="auto">No error reported from this file</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import Vue from 'vue'

const foo = Vue.extend({
  props: {
    a: Array,
    s: String,
    b: Boolean
  },
  created() {
    console.log(this.a)
    console.log(this.s)
    console.log(this.b)
  }
})"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-smi">Vue</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span>

<span class="pl-k">const</span> <span class="pl-s1">foo</span> <span class="pl-c1">=</span> <span class="pl-smi">Vue</span><span class="pl-kos">.</span><span class="pl-en">extend</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
  <span class="pl-c1">props</span>: <span class="pl-kos">{</span>
    <span class="pl-c1">a</span>: <span class="pl-smi">Array</span><span class="pl-kos">,</span>
    <span class="pl-c1">s</span>: <span class="pl-smi">String</span><span class="pl-kos">,</span>
    <span class="pl-c1">b</span>: <span class="pl-smi">Boolean</span>
  <span class="pl-kos">}</span><span class="pl-kos">,</span>
  <span class="pl-en">created</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">a</span><span class="pl-kos">)</span>
    <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">s</span><span class="pl-kos">)</span>
    <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">b</span><span class="pl-kos">)</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3 dir="auto">What is actually happening?</h3>
<p dir="auto"><code class="notranslate">a</code>, <code class="notranslate">s</code>, <code class="notranslate">b</code> are not bound to this instance</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="index.ts:10:22 - error TS2339: Property 'a' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, a
ny&gt;&gt;'.

10     console.log(this.a)
                        ~

index.ts:11:22 - error TS2339: Property 's' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, a
ny&gt;&gt;'.

11     console.log(this.s)
                        ~

index.ts:12:22 - error TS2339: Property 'b' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, any&gt;&gt;'.

12     console.log(this.b)
                        ~


Found 3 errors."><pre class="notranslate"><code class="notranslate">index.ts:10:22 - error TS2339: Property 'a' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, a
ny&gt;&gt;'.

10     console.log(this.a)
                        ~

index.ts:11:22 - error TS2339: Property 's' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, a
ny&gt;&gt;'.

11     console.log(this.s)
                        ~

index.ts:12:22 - error TS2339: Property 'b' does not exist on type 'ComponentOptions&lt;Vue, DefaultDat
a&lt;Vue&gt;, DefaultMethods&lt;Vue&gt;, DefaultComputed, PropsDefinition&lt;Record&lt;string, any&gt;&gt;, Record&lt;string, any&gt;&gt;'.

12     console.log(this.b)
                        ~


Found 3 errors.
</code></pre></div>
<h3 dir="auto">Version</h3>
<p dir="auto">2.6.10</p>
<h3 dir="auto">Reproduction link</h3>
<p dir="auto"><a href="https://github.com/Patcher56/ts3.4.x-vuejs-issue">https://github.com/Patcher56/ts3.4.x-vuejs-issue</a></p>
<h3 dir="auto">Steps to reproduce</h3>
<ol dir="auto">
<li>create a new vue typescript project (without class syntax) <code class="notranslate">vue create test-ts</code></li>
<li>open <code class="notranslate">src/components/HelloWorld.vue</code></li>
<li>add a data variable and try to access it in a computed property</li>
</ol>
<h3 dir="auto">What is expected?</h3>
<p dir="auto">No errors (as the data is defined)</p>
<h3 dir="auto">What is actually happening?</h3>
<p dir="auto">Typescript error 2339 telling me<br>
<code class="notranslate">Property 'test' does not exist on type 'CombinedVueInstance&lt;Vue, {}, {}, {}, Readonly&lt;{ msg: string; }&gt;&gt;'.</code></p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/2443710/56112638-f5ae1500-5f5b-11e9-82c5-bc2cd4f52831.png"><img src="https://user-images.githubusercontent.com/2443710/56112638-f5ae1500-5f5b-11e9-82c5-bc2cd4f52831.png" alt="image" style="max-width: 100%;"></a></p>
<hr>
<p dir="auto">I think this has something to do with the changed type inference in Typescript 3.4.x.</p>
<p dir="auto"><strong>Important</strong>: Change vetur settings to use workspace dependencies to show errors directly in vscode, else you will only get the error when using <code class="notranslate">yarn serve</code>.</p>