2.5.2
https://github.com/jiayexie/vue-typescript-declaration-repro
Build the project with npm run build. Build should pass.

Uncomment the render function in error.ts and build again. Build fails because component type has changed and only has a 'message' prop on it.

Component type should be inferred from data, props, computed, methods, and be accessible in methods and render functions.
As soon as I add a render function, the type inference loses everything except props.
This is because this type inference goes cyclic. Adding VNode return type to your render function would fix the problem.
import Vue, { VNode } from 'vue'
Vue.extend({
// ...
render(h): VNode {
return h('div', this.message)
}
})
We will include this caveats in the docs.
I will make a pull request to vuejs.org.
Most helpful comment
This is because
thistype inference goes cyclic. AddingVNodereturn type to yourrenderfunction would fix the problem.We will include this caveats in the docs.