我主要是一名JavaScript开发人员,但最近接触了一些Java,我很喜欢Java如何处理通配符导入。在不使用任何as
语句的情况下,导入会获取所有命名导入,并将它们作为变量/类直接导入到当前命名空间/作用域中,而不需要有一个变量作为它们的属性。
这在JavaScript中可能吗。例如,如果我进行以下导出:
导出示例
export const a = 1;
export const b = 2;
export const c = 3;
export default const d = 4;
那么相关进口也是如此:
通配符导入示例
import * as Foo from "./file.js";
Foo.a // -> 1
Foo.b // -> 2
Foo.c // -> 3
Foo.d // -> 4
默认导入示例
import Foo from "./file.js";
Foo // -> 4
特定/命名导入示例
import { a, b } from "./file.js";
a // -> 1
b // -> 2
c // -> undefined
d // -> undefined
我想要的是,Java似乎支持这样一种功能,即执行类似当前JavaScript通配符导入的操作,但不使用as
语句,如下面的示例,其中所有命名导出都作为当前命名空间/范围内的完全可访问变量导入:
通配符导入(不带as
(示例-DESIRED
import * from "./file.js";
a // -> 1
b // -> 2
c // -> 3
d // -> 4
这可能吗?
可能不是。
我想这正是ES6规范所不允许的。MDN文档对此事非常清楚;我引用:
注意:JavaScript没有像import*from"模块名称";,因为名称冲突的可能性很高。