【问题标题】:Differences between import options for 3rd party libraries in typescript/Angular 2typescript/Angular 2 中 3rd 方库的导入选项之间的差异
【发布时间】:2016-09-15 18:35:31
【问题描述】:
有什么区别:
import * as jslibname from 'jslibname'
和
declare var jslibname: any;
例如,对于firebase,我需要declare var firebase: any;
暂时,我需要import * as moment from 'moment';
这里的逻辑是什么?我什么时候使用其中一个?
顺便说一下,这是使用 Angular CLI 和 systemjs。
【问题讨论】:
标签:
angular
typescript
firebase
momentjs
angular-cli
【解决方案1】:
当你这样做时
import * as library from 'library';
您实际上是在导入库,并且可以开始使用它。如果您尝试在不导入的情况下使用它,则会产生错误。有时,库已在您的应用中的某个位置导入,但您只想使用它。你可以,没有问题,应用程序会工作,但我猜在你的情况下 TS 编译器会抛出一个错误(并且可能你的 IDE 将其标记为错误)。这是因为您的库 (.d.ts) 没有类型定义文件。修复它的最简单方法是这样做
declare var library: any;
这告诉 TS 编译器库存在并停止抛出编译错误(IDE 也停止抱怨)。