打字稿/ Angular 2中第三方库的导入选项之间的差异

时间:2016-09-15 18:35:32

标签: angular typescript firebase momentjs angular-cli

之间的区别是什么: import * as jslibname from 'jslibname'declare var jslibname: any;

例如,对于firebase,我需要declare var firebase: any; 暂时,我需要import * as moment from 'moment';

这里的逻辑是什么?我什么时候使用其中一个?

顺便说一下,这是Angular CLI和systemjs。

1 个答案:

答案 0 :(得分:0)

当你这样做时

import * as library from 'library';

您实际上正在导入库,您可以开始使用它。如果你尝试使用它而不导入,那么你会发生错误。有时库已在您的应用中的某个位置导入,但您只想使用它。你可以,没有任何问题,应用程序将工作,但我想在你的情况下TS编译器抛出一个错误(可能你的IDE将其标记为错误)。这是因为您的库(.d.ts)没有打字定义文件。解决问题的最简单方法是执行

declare var library: any;

这告诉TS编译器存在库并停止抛出编译错误(IDE也停止抱怨)。