Vue: [TypeScript] Default export of the module has or is using private name 'VueConstructor'

Created on 4 Nov 2017  ·  4Comments  ·  Source: vuejs/vue

Version

2.5.3

Reproduction link

https://github.com/gluons/vue-issue-6999

Steps to reproduce

  • Export some object that contain Vue or typeof Vue types.
  • Set compilerOptions -> declaration to true

What is expected?

Able to build without error.

It should be able to export plugin/library with TypeScript declaration.

What is actually happening?

Default export of the module has or is using private name 'VueConstructor' happened when built it.


I'm developing Vue component with TypeScript.
I also need TypeScript to generate declaration for other TypeScript developer (And also JavaScript with Vetur 🙂).
But I face this error. 😢

Thanks bbuchanan for the cause.

improvement typescript

Most helpful comment

@relign Try importing VueConstructor above your code.

import { VueConstructor } from 'vue';
/* or */
import Vue, { VueConstructor } from 'vue'; // With Vue

All 4 comments

I've made a PR to expose VueConstructor #7002
In the meantime, you can manually annotate the install function by PluginFunction

export default {
  install: install as PluginFunction<void>
}

Version
2.5.13
image
I try [email protected], when set compilerOptions.declaration = true in tsconfig.json,it export error
Default export of the module has or is using private name 'VueConstructor'.
image

@relign Try importing VueConstructor above your code.

import { VueConstructor } from 'vue';
/* or */
import Vue, { VueConstructor } from 'vue'; // With Vue

I've opened a request to fix issues like these in TypeScript by bringing declaration files to parity with language features. https://github.com/microsoft/TypeScript/issues/35822

Was this page helpful?
0 / 5 - 0 ratings