需要帮助来理解Prime NG

时间:2016-09-28 07:37:47

标签: javascript angular typescript primeng

我正在使用Typescript玩Angular 2而我使用prime ng(http://www.primefaces.org/primeng/)来表示ui组件。 我不明白的是,素数以这种方式宣告其模块:

export declare class TooltipModule {
}

所以,我对这种方法有两个问题:

  1. 为什么它不使用@NgModule装饰器? (就像我为所有自己的模块所做的那样)
  2. "声明"的目的是什么?关键字(我读了几个关于此的答案,但我还不清楚:P)
  3. 更新:

    甚至Angular2本身也以这种方式声明模块,例如:

    export declare class HttpModule {
    }
    

    更新2:

    我认为@NgModule与angular 1.x中的angular.module相比完全不同,它只是一种配置应用程序的方式(" main"文件) ,其他"事物"只是课......我是对的吗?

1 个答案:

答案 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.jsindex.js指向tooltip.js,因此tooltip.js将在运行时加载,而非定义文件。

如果您查看.ts(来源)文件而不是.d.ts(定义)文件,您应该看到您熟悉的内容@NgModule