需要帮助来理解Angular 2/Typescript模块在Prime NG中的声明
Need help to understand Angular 2/Typescript modules declaration in Prime NG
我正在使用Typescript玩Angular 2,我正在使用primeng (http://www.primefaces.org/primeng/)作为ui组件。我不明白的是prime ng以这种方式声明它的模块:
export declare class TooltipModule {
}
我有两个问题:
- 为什么不使用@NgModule装饰器?(就像我做的所有我自己的模块)
- "声明"关键字的目的是什么(我读了一些关于这个问题的答案,但我仍然不清楚:P)
甚至Angular2本身也是这样声明模块的,例如:
export declare class HttpModule {
}
更新2:我认为@NgModule和angular是完全不同的。模块。它只是配置应用程序("主"文件)的一种方式,其他"东西"只是类……我说的对吗?
这只是一个Typescript定义文件(不同于源代码)。它主要用于编译时类型安全和工具(即智能感知)。
但是一般来说,假设库不是用Typescript编写的。我们可以写一个Typescript定义文件,我们可以把它当作普通JS库的门面来使用。在这里,我们会得到类型的,这在纯JS中是得不到的。
假设我们有以下的发行包:
// this is the build distribution
tooptip
|
+-- src
| +-- index.ts
| +-- tooltip.ts // actual source code
|
+-- index.js
+-- tooltip.js
+-- tooltip.d.ts // definition file
如果你在这里输入
import { ToolTipModule } from 'primeng/tooltip';
如果定义文件不在那里,这将无法工作,因为Typescript文件在src
.
这里我们只使用定义文件它给了我们所有的类型。.js
文件是已经编译的具有实际实现的Typescript源代码。
由于'primeng/tooltip'
指向index.js
, index.js
指向tooltip.js
,因此tooltip.js
将在运行时加载,而不是加载定义文件。
如果您查看.ts
(源)文件而不是.d.ts
(定义)文件,您应该会看到您熟悉的@NgModule
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 从模块内部访问Express装载路径
- RequireJS向模块传递配置总是返回undefined
- Node.js正在更改应用程序以使用集群模块
- 在Meteor项目中安装并包含npm模块后出错
- 模块模式和这个
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 找不到模块捆绑包
- JavaScript命名约定;静态“;类或模块
- 显示模块模式在Knockout中设置模型的新实例
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- Javascript模块系统I'I’我正在努力,但搞不明白
- 如何捆绑循环相关模块
- 如何捆绑commonjs模块,除非指定需要
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 需要帮助来理解Angular 2/Typescript模块在Prime NG中的声明