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

时间:2017-04-23 07:29:49

标签: javascript

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

(关闭但没有雪茄:Angular 2 import statement wildcard syntax

我想要

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

而不是恼人的东西,如:

console.log( MyModule.foobar )

或:

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

2 个答案:

答案 0 :(得分:1)

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

这是不好的做法为什么?

假设您在MyModule中有几百个模块,并且您想要导入所有想到要导入的不必要的模块,您可能不会使用这些模块将占用内存并使您的应用程序变慢,您应该导入导入只有你想要使用的模块。

e.g

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

如果您仍想使用将导入所有模块的外卡

例如

import * as http from "http"

那么你也应该使用树摇动,所以在部署你的应用程序时你可以摆脱所有其他不必要的模块。

希望这有帮助

答案 1 :(得分:1)

import * from "./MyModule";

不是ES Module规范的一部分。您不能简单地将成员注入范围而不命名它们。只要模块发生变化,就会出现标识符冲突。

正如@ haim770在他的评论中指出的那样,这非常类似于备受诟病的(并且非常正确)with陈述。

根本不允许。