Vue 2.5 vue-class-component使用Vue命名空间,但它是一个Type

时间:2017-10-25 12:05:46

标签: typescript vue.js

将使用vue-class-component的Vue 2.0 Typescript项目升级到Vue 2.5后,我在声明文件中收到以下错误:

ERROR in /myproject/node_modules/vue-class-component/lib/declarations.d.ts

(6,33): error TS2702: 'Vue' only refers to a type, 
but is being used as a namespace here.

实际上,declaration.d.ts似乎使用Vue作为命名空间:

options: Vue.ComponentOptions<Vue>

但我该如何解决这个问题呢?这是vue-class-component声明文件中的疏忽/故障吗?

整个申报文件:

import Vue from 'vue';
export declare type VueClass = {
    new (): Vue;
} & typeof Vue;
export declare type DecoratedClass = VueClass & {
    __decorators__?: ((options: Vue.ComponentOptions<Vue>) => void)[];
};

2 个答案:

答案 0 :(得分:4)

我通过显式导入组件选项来修复它,这似乎有效:

import Vue from 'vue';
import {ComponentOptions} from 'vue'

let options : ComponentOptions<Vue>;

答案 1 :(得分:1)

Vue的声明文件最近更新了,因此请确保vue-class-componentvue都是最新的。由于更新,您可能必须以下列方式引用类型:

import Vue, * as VueTypes from "vue"

let x: VueTypes.ComponentOptions<any>;