我正在使用Typescript玩Angular 2而我使用prime ng(http://www.primefaces.org/primeng/)来表示ui组件。 我不明白的是,素数以这种方式宣告其模块:
export declare class TooltipModule {
}
所以,我对这种方法有两个问题:
更新:
甚至Angular2本身也以这种方式声明模块,例如:
export declare class HttpModule {
}
更新2:
我认为@NgModule与angular 1.x中的angular.module相比完全不同,它只是一种配置应用程序的方式(" main"文件) ,其他"事物"只是课......我是对的吗?
答案 0 :(得分:0)
它只是一个Typescript Definition file(与源代码不同)。它主要用于编译时类型安全和工具(即智能感知)。
但一般来说,让我们说一个图书馆不是用Typescript写的。我们可以编写一个Typescript定义文件,我们可以将它用作vanilla 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