From 52dd81dff443cf38a6a5a0c7eabd44c95fd46d7d Mon Sep 17 00:00:00 2001 From: kuangyaxing Date: Fri, 2 Jun 2023 10:45:11 +0800 Subject: [PATCH] =?UTF-8?q?types:=20=E4=BF=AE=E5=A4=8Dtypescript=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/base-widgets/index.ts | 15 +++++++++++++-- src/packages/container-component/index.ts | 16 ++++++++++++++-- .../components/left-aside/components/index.ts | 11 ++++++++--- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/packages/base-widgets/index.ts b/src/packages/base-widgets/index.ts index 4e1275b..82f5bc8 100644 --- a/src/packages/base-widgets/index.ts +++ b/src/packages/base-widgets/index.ts @@ -1,12 +1,23 @@ import { VisualEditorComponent } from '@/visual-editor/visual-editor.utils'; -const modules = import.meta.globEager('./*/index.tsx'); +const modules = import.meta.globEager('./*/index.tsx') as Record< + string, + undefined | { default: VisualEditorComponent } | VisualEditorComponent +>; + +type DefaultModule = { default: VisualEditorComponent }; const components: Record = {}; Object.entries(modules).forEach(([key, module]) => { const name = key.replace(/\.\/(.*)\/index\.(tsx|vue)/, '$1'); - components[name] = module?.default || module; + if (module) { + if (Object.prototype.hasOwnProperty.call(module, 'default')) { + components[name] = (module as DefaultModule).default; + } else { + components[name] = module as VisualEditorComponent; + } + } }); console.log(components, 'base-widgets'); diff --git a/src/packages/container-component/index.ts b/src/packages/container-component/index.ts index 60c123c..35e3bcf 100644 --- a/src/packages/container-component/index.ts +++ b/src/packages/container-component/index.ts @@ -1,12 +1,24 @@ import { VisualEditorComponent } from '@/visual-editor/visual-editor.utils'; -const modules = import.meta.globEager('./*/index.tsx'); +const modules = import.meta.globEager('./*/index.tsx') as Record< + string, + undefined | { default: VisualEditorComponent } | VisualEditorComponent +>; + +type DefaultModule = { default: VisualEditorComponent }; const components: Record = {}; Object.keys(modules).forEach((key: string) => { const name = key.replace(/\.\/(.*)\/index\.(tsx|vue)/, '$1'); - components[name] = modules[key]?.default || modules[key]; + const module = modules[key]; + if (module) { + if (Object.prototype.hasOwnProperty.call(module, 'default')) { + components[name] = (module as DefaultModule).default; + } else { + components[name] = module as VisualEditorComponent; + } + } }); console.log(components, 'container-component'); diff --git a/src/visual-editor/components/left-aside/components/index.ts b/src/visual-editor/components/left-aside/components/index.ts index 5e85ccd..e1b6397 100644 --- a/src/visual-editor/components/left-aside/components/index.ts +++ b/src/visual-editor/components/left-aside/components/index.ts @@ -1,14 +1,19 @@ import { DefineComponent } from 'vue'; -const modules = import.meta.globEager('./*/index.(tsx|vue)'); +const modules = import.meta.globEager('./*/index.(tsx|vue)') as Record< + string, + undefined | { default: DefineComponent } +>; const components: Record = {}; console.log(modules, '起航'); for (const path in modules) { - const comp = modules[path].default; - components[comp.name || path.split('/')[1]] = comp; + const comp = modules[path]?.default; + if (comp) { + components[comp.name || path.split('/')[1]] = comp; + } } console.log('left-aside components:', components);