打字稿通配符将所有模块名称导入当前命名空间?



我希望能够不必在使用该模块值的所有位置前面键入模块名称(甚至是模块的别名)。(例如,我宁愿不必求助于运行 C 预处理器,这样我就可以做 #include 类型的东西。

(关闭但没有雪茄:Angular 2 导入语句通配符语法)

我要

import * from "./MyModule";
console.log( foobar );

而不是烦人的东西,例如:

console.log( MyModule.foobar )

或:

import * as M from "./MyModule";
console.log( M.foobar );
import * from "./MyModule";

不是 ES 模块规范的一部分。不能简单地将成员注入到作用域中而不命名它们。每当模块更改时,都可能出现标识符冲突。

正如@haim770在他的评论中指出的那样,这非常像with声明中饱受诟病(而且非常正确)。

这是根本不允许的。

Typescript 通配符将所有模块名称导入当前命名空间?

这是不好的做法,为什么?

假设您的 MyModule 中有数百个模块,并且您想要导入所有考虑将要导入多少不必要的模块,这些模块您可能不会使用,这会占用内存并使您的应用程序变慢,您应该导入导入您唯一要使用的模块。

例如

import {A, D} from './MyModules';

如果您仍然想使用通配符,它将导入所有模块

例如

import * as http from "http"

然后,您还应该使用树摇晃,以便在部署应用程序时可以删除所有其他不必要的模块。

希望这有帮助

最新更新