Explorar o código

fix(types): type support for advanced async components (#8438)

Timur Kiyui %!s(int64=7) %!d(string=hai) anos
pai
achega
dfaf9e2436
Modificáronse 1 ficheiros con 13 adicións e 1 borrados
  1. 13 1
      types/options.d.ts

+ 13 - 1
types/options.d.ts

@@ -15,12 +15,24 @@ export type Component<Data=DefaultData<never>, Methods=DefaultMethods<never>, Co
 interface EsModuleComponent {
   default: Component
 }
+                      
+export type AsyncComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps>
+  = AsyncComponentPromise<Data, Methods, Computed, Props>
+  | AsyncComponentFactory<Data, Methods, Computed, Props>
 
-export type AsyncComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = (
+export type AsyncComponentPromise<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = (
   resolve: (component: Component<Data, Methods, Computed, Props>) => void,
   reject: (reason?: any) => void
 ) => Promise<Component | EsModuleComponent> | void;
 
+export type AsyncComponentFactory<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = () => {
+  component: AsyncComponentPromise<Data, Methods, Computed, Props>;
+  loading?: Component | EsModuleComponent;
+  error?: Component | EsModuleComponent;
+  delay?: number;
+  timeout?: number;
+}
+
 /**
  * When the `Computed` type parameter on `ComponentOptions` is inferred,
  * it should have a property with the return type of every get-accessor.