Forráskód Böngészése

types: add EsModuleComponent definition (#6477)

JounQin 8 éve
szülő
commit
0b2929a3d6
3 módosított fájl, 16 hozzáadás és 4 törlés
  1. 6 1
      types/options.d.ts
  2. 5 0
      types/test/es-module.ts
  3. 5 3
      types/test/options-test.ts

+ 6 - 1
types/options.d.ts

@@ -6,10 +6,15 @@ type Constructor = {
 }
 
 export type Component = typeof Vue | ComponentOptions<Vue> | FunctionalComponentOptions;
+
+interface EsModuleComponent {
+  default: Component
+}
+
 export type AsyncComponent = (
   resolve: (component: Component) => void,
   reject: (reason?: any) => void
-) => Promise<Component> | Component | void;
+) => Promise<Component | EsModuleComponent> | Component | void;
 
 export interface ComponentOptions<V extends Vue> {
   data?: Object | ((this: V) => Object);

+ 5 - 0
types/test/es-module.ts

@@ -0,0 +1,5 @@
+export default {
+  data() {
+    return {}
+  }
+}

+ 5 - 3
types/test/options-test.ts

@@ -1,5 +1,5 @@
 import Vue = require("../index");
-import { ComponentOptions, FunctionalComponentOptions } from "../index";
+import { AsyncComponent, ComponentOptions, FunctionalComponentOptions } from "../index";
 
 interface Component extends Vue {
   a: number;
@@ -206,11 +206,13 @@ Vue.component('functional-component', {
   }
 } as FunctionalComponentOptions);
 
-Vue.component("async-component", (resolve, reject) => {
+Vue.component("async-component", ((resolve, reject) => {
   setTimeout(() => {
     resolve(Vue.component("component"));
   }, 0);
   return new Promise((resolve) => {
     resolve({ functional: true } as FunctionalComponentOptions);
   })
-});
+}) as AsyncComponent);
+
+Vue.component('async-es-module-component', (() => import('./es-module')) as AsyncComponent)