ES6/TypeScript能否在单条import语句同时导入全部及指定导出?
解决方案
纯JavaScript方案
ES模块语法规则明确禁止在同一条import语句中同时使用命名空间导入(* as mod)和具名导入({ f2 }),你尝试的import { * as mod, f2 } from "./mod.mjs"属于非法语法,这是语言层面的硬性限制。
要实现你的需求,只能拆分写成两条独立的import语句:
// 将所有具名导出收集到mod对象中 import * as mod from "./mod.mjs"; // 单独导入f2 import { f2 } from "./mod.mjs";
这种写法完全满足要求:无需模块的默认导出,也不需要导入后解构,同时实现了“收集所有导出为mod别名”和“单独获取f2”的目标。而且ES模块有缓存机制,模块只会被加载一次,不用担心重复加载的问题。
TypeScript方案
TypeScript完全遵循ES模块的语法规范,因此也没有特殊语法支持在单条import语句中同时实现命名空间导入和具名导入。你需要使用和纯JavaScript完全相同的两条import语句来达成需求。
内容的提问来源于stack exchange,提问作者avo
相关产品推荐
相关产品推荐

