在我的项目中,我可能会在后端生成的文件夹中获取icons/svgs作为react组件。还有一个WAMP(bonefish/autobahn)解决方案,我可以使用图标的名称(我知道这有点奇怪,但就让它这样吧)。
他们会把所有的图标在一个文件夹中的嵌入式单位,我将不得不从那里得到的图标。图标将在一个索引文件中导出,并在我需要的地方导入。
结构将是这样的:
.
├─ src
├─── buttonManagement.tsx
|
├─ incons
├─── index.ts
├─── iconA.tsx
├─── iconB.tsx
|
.
.
index.ts
export * from "iconA";
export * from "iconB";
在buttonManagement中,我可以导入所有图标并像这样使用它们。我不能使用符号icons.iconName,因为这是在运行时完成的,我不能导入我不知道名称的东西。
import * as icons from "../icons"
const icon = icons["iconA"];
到目前为止一切顺利,但是当后端发送一个不存在的图标名称时,我该怎么办?
const icon = icons["iconC"];
然后我得到这个错误
Property 'iconC' does not exist on type 'typeof import("/home/ubuntu/workspace/code/myProject/icons/index")'
我该怎么做?
我尝试使用try/catch
这个也不行
const iconC = icons["iconC"] as React.ComponentType | undefined;
1条答案
按热度按时间bbuxkriu1#
据我所知,你试图访问一个
icon
,编译时不存在。你可以像下面这样定义Icons
的类型,并将类型转换为icons
,如果iconC
有效,则返回它,然后在编译时完成。