From a9017da294eb88d7fc719552b7814524b07bb06d Mon Sep 17 00:00:00 2001 From: invalid w Date: Sun, 3 Sep 2023 16:21:51 +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?= =?UTF-8?q?=20(#2967)=20(#2991)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/factory/createAsyncComponent.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/utils/factory/createAsyncComponent.tsx b/src/utils/factory/createAsyncComponent.tsx index fc5e2a604a2..712e56cb27b 100644 --- a/src/utils/factory/createAsyncComponent.tsx +++ b/src/utils/factory/createAsyncComponent.tsx @@ -1,4 +1,7 @@ import { + AsyncComponentLoader, + Component, + ComponentPublicInstance, defineAsyncComponent, // FunctionalComponent, CSSProperties } from 'vue'; @@ -27,7 +30,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,