From f1bc5e738ac134fa08398fe39648edd1c9766860 Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 4 Sep 2023 14:26:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=B8=BAcreateAsyncComponent=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=A2=9E=E5=8A=A0=E7=B1=BB=E5=9E=8B=E6=8E=A8=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/factory/createAsyncComponent.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/utils/factory/createAsyncComponent.tsx b/src/utils/factory/createAsyncComponent.tsx index f49c832..6fc6720 100644 --- a/src/utils/factory/createAsyncComponent.tsx +++ b/src/utils/factory/createAsyncComponent.tsx @@ -1,3 +1,8 @@ +import type { + AsyncComponentLoader, + Component, + ComponentPublicInstance, +} from 'vue' import { defineAsyncComponent, // FunctionalComponent, CSSProperties @@ -27,7 +32,11 @@ interface Options { retry?: boolean } -export function createAsyncComponent(loader: Fn, options: Options = {}) { +export function createAsyncComponent< + T extends Component = { + new (): ComponentPublicInstance + }, +>(loader: AsyncComponentLoader, options: Options = {}) { const { size = 'small', delay = 100, timeout = 30000, loading = false, retry = true } = options return defineAsyncComponent({ loader,