需要帮助来理解Angular 2/Typescript模块在Prime NG中的声明

Need help to understand Angular 2/Typescript modules declaration in Prime NG

本文关键字:Prime 模块 NG 声明 Typescript 帮助 Angular      更新时间:2023-09-26

我正在使用Typescript玩Angular 2,我正在使用primeng (http://www.primefaces.org/primeng/)作为ui组件。我不明白的是prime ng以这种方式声明它的模块:

export declare class TooltipModule {
}

我有两个问题:

  1. 为什么不使用@NgModule装饰器?(就像我做的所有我自己的模块)
  2. "声明"关键字的目的是什么(我读了一些关于这个问题的答案,但我仍然不清楚: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