在JavaScript中使用"as"导入通配符



我主要是一名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"模块名称";,因为名称冲突的可能性很高。

最新更新