typescript - Vue 2.5 vue-class-component använder Vue-namnområdet men det är en typ


Efter att ha uppgraderat mitt Vue 2.0 TypeScript-projekt som använder vue-class-component till Vue 2.5 får jag följande fel i deklarationsfilen:

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.

Faktiskt verkar declaration.d.ts använda Vue som ett namnrymd:

options: Vue.ComponentOptions<Vue>

Men hur kan jag åtgärda detta? Är detta ett förbiseende/fel i deklarationsfilen för vue-class-component?

Hela deklarationsfilen:

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

Svar #1

Jag fixade det genom att importera componentoptions uttryckligen, det verkar fungera:

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

let options : ComponentOptions<Vue>;

Svar #2

Vues deklarationsfiler uppdaterades nyligen, så se till att både vue-class-component och vue är uppdaterade. På grund av uppdateringen kan du behöva referera till typer på följande sätt:

import Vue, * as VueTypes from "vue"

let x: VueTypes.ComponentOptions<any>;