这种场景下能否不导入指定类直接全量导入?通配符导入后enum无法识别如何解决
通配符导入后无需单独引入enum的解决方案
- 方案1:通过通配符导入的命名空间调用enum
如果你使用的是import * as 命名空间名 from '文件路径'的通配符导入语法,所有导出的成员都会挂载在你定义的命名空间对象下,直接通过命名空间名.Enum名称调用即可,编译/语法提示工具可正常识别类型与值,无需单独导入。
示例代码:// 通配符导入所有导出内容到Utils命名空间下 import * as Utils from './config' // 直接调用对应Enum const currentBizType = Utils.BizType.ONLINE - 方案2:导入时同步解构目标enum(仅需一行导入语句)
符合ESModule规范的编译环境都支持在同一条导入语句中同时写通配符导入和具名导入,不需要分开写两次import:
示例代码:// 一行实现通配符挂载+单独引入Enum到顶级作用域 import * as Utils, { BizType } from './config' // 可以直接在当前作用域使用BizType const currentBizType = BizType.ONLINE
注:你遇到的识别失败问题属于ESModule的规范设计:通配符导入的成员默认不会注入到当前模块的顶级作用域,必须通过命名空间访问,不是工具或者代码的bug。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

