message: fix(types): type support for advanced async components
diff: @@ -16,11 +16,23 @@ interface EsModuleComponent {
  default: Component
  }
  -export type AsyncComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = (
  +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 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.
  