使用Java,导入确实非常简单明了。
使用以下语句导入:
import fr.domain.MyUtils;
然后,您可以像这样使用它:
MyUtils.myStaticMethod();
仅在同一文件中有两个时,才需要为MyUtils命名空间。
使用Typescript AMD和requirejs,情况似乎更加复杂。
这里是导入语句:
import u = require('fr/domain/MyUtils');
以及使用方式:
u.fr.domain.MyUtils.myStaticMethod();
非常详细...
我发现使用别名的唯一方法是将import语句加倍:
import u = require('fr/domain/MyUtils');
import MyUtils = u.fr.domain.MyUtils;
之后,您可以在模块中编写此代码:
MyUtils.myStaticMethod();
它更干净,但是Eclipse TS插件与此完全失去了,自动完成变得不稳定。在Visual Studio中,自动完成是可以的,但是必须执行两次“ F12转到定义”,这很烦人。
有一个更好的方法吗 ?还是我们应该使命名空间尽可能短?
你这样做是错的。
您的“ fr / domain / MyUtils”模块应该只导出应该是MyUtils的内容。即它应该看起来像这样:
export function myStaticMethod() { /* ...code... */ }
它不应导出某些全局名称空间对象,也不应向从其他位置获得的某些全局名称空间对象添加任何内容。模块文件在目录中的自然放置是使用外部模块时创建“命名空间”的方式。
如果操作正确,那么您的消费者将如下所示:
import MyUtils = require('fr/domain/MyUtils');
MyUtils.myStaticMethod();
或者,甚至更正确地使用ES模块语法:
import { myStaticMethod } from 'fr/domain/MyUtils';
myStaticMethod();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句