我试图了解 TypeScript 项目如何解析通过 npm 安装的模块及其类型定义文件的导入。
据我所知(并遵循TypeScript 文档),TypeScript有两种方式用于模块解析:
使用相对路径:它将检查当前目录中的模块文件是否存在(myModule.js,myModule.tsx和myModule.d.ts)或位于名为myModule(包含index.js,index.tsx和index.d.ts)的目录中
使用非相对路径:它将检查 NodeJS 行为后的导入node_modules,方法是以与相对路径的引用相同的方式检入文件夹,如果未找到则跳转目录
所以看起来很容易理解。我不明白,是怎么解决的类型定义文件采用进口的时候npm install @types/myModule。我需要理解这一点才能正确构建我的项目,并理解为什么有时找不到我的模块/类型定义。
我不明白它是如何知道“其中的文件夹node_modules/@types/myModule包含以下类型的定义myModule:它必须在该文件夹中检查的信息存储在哪里?
奖励:导入和管理类型定义文件的最佳方法是什么?是安装@types相关模块的包,还是下载file.d.ts并将其放在模块文件夹中更好node_modules?
非常感谢任何帮助和/或参考。
我想达到什么目的
我正在尝试在 TypeScript 中创建一个模块,该模块将包含所需类的每个导出。事实上,真正困扰我的是import在我的类中拥有所有相对的语句,这并不是进一步维护的最佳方式。我只想使用绝对路径。
一旦被转译,具有绝对路径的类(在生成的 JavaScript 中)有错误的路径(因为它们没有被转换为相对路径,当与tsconfig.json>outDir选项结合使用时甚至更糟)。
示例用法
让我们以下面的项目层次结构为例
root
|- helpers
|- MyHelper.ts
|- AnotherHelper.ts
|- calculators
|- MyCalc.ts
|- parsers
|- XmlParser.ts
|- JsonParser.ts
|- index.ts // currently holding export statements
Run Code Online (Sandbox Code Playgroud)
我想做的事
我想要一个这样的index.ts文件:
// a top-level module, resolved like the `node` strategy of NodeJS module resolution
export module IndexModule {
export { MyHelper } from "./helpers/MyHelper";
export { AnotherHelper } from "./helpers/AnotherHelper";
// do the same for every class in …Run Code Online (Sandbox Code Playgroud) 我试图注入一个ArrayList的String与吉斯的帮助秒.我想显示一个带有许多RadioButtons的面板(例如),用户可以选择一些要激活的服务.
选择后,我想获取所选服务的所有名称并将其添加到列表中,并将此列表注入负责创建服务的经理.这是一个例子:
public class UIProviderModule extends ProviderServiceModule {
private ArrayList<String> requestedServices;
public UIProviderModule(ArrayList<String> requestedServices) {
this.requestedServices = requestedServices;
}
@Override
protected void configure() {
bindConstant().annotatedWith(Names.named(Constants.REQ_SERVICES)).to(requestedServices);
bind(IParser.class).to(UIParser.class);
super.configure();
}
}
Run Code Online (Sandbox Code Playgroud)
我见过很多关于Multibindings和提供者的帖子,但我不明白这对我有什么帮助.我只是想检索名称,因为我不使用必须绑定到接口的类.我错过了什么吗?
注意:我知道这可能不是使用Guice的好方法,因为我将列表绑定到Module.
这是我到目前为止所做的:
https://stackblitz.com/edit/angular-jsmp9l
在代码片段上,我们可以看到一个包含按钮的简单工具栏(以更大的尺寸打开 HTML 视图,因为有一些fxShow / fxHide指令正在触发)。
我想要做的是按下 div 末尾的登录按钮,最右边。
我尝试了以下方法:
<span style="flex: 1 1 auto;"></span>在登录和联系按钮之间添加一个style="margin-left: auto;"到登录按钮fxFlexFill到div包含链接的元素,并用重试span及margin-left以上作为mentionned如果我删除div容器并使用<span style="flex: 1 1 auto;">它正常工作,登录按钮会出现在工具栏的末尾(水平)。
我想了解为什么div容器会导致这种行为,以及如何将登录按钮推到右侧。也许我对 Flex 容器的理解不是很好,所以欢迎任何指点。
我想知道是否有办法在对话框的按钮下显示一些文字(如信息)?我在许多地方看过,但即使对齐按钮看起来很乱(从这篇文章).
这就是我现在所得到的.我只想在2个按钮下面的"设置我的选择..."文本.
我在文档中查找了一个函数,可以帮助我显示我想要的方式(比如" getButtonBar()"或类似的东西).ButtonBar对于我想要实现的目标而言,创建新的东西似乎有点复杂.
我还尝试创建一个看起来像对话框的舞台,但是我需要以与Dialogs 一样的方式点击"是/否"来传递结果.
有没有办法实现我想要的?或者我必须自己完全构建它?谢谢 !
node.js ×2
typescript ×2
arraylist ×1
dialog ×1
guice ×1
inject ×1
java ×1
javafx ×1
javascript ×1
module ×1