typescript/Angular 2 中第 3 方库的导入选项之间的差异

Differences between import options for 3rd party libraries in typescript/Angular 2

有什么区别: import * as jslibname from 'jslibname'declare var jslibname: any;

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

这是什么逻辑?我什么时候使用一个或另一个?

顺便说一句,这是与 Angular CLI 和 systemjs 一起使用的。

当你这样做时

import * as library from 'library';

你真的是在导入库,可以开始使用了。如果您尝试在不导入的情况下使用它,那么您会产生错误。有时库 已经被导入 在您应用的某个地方,但您只想使用它。你可以,没有问题,应用程序将运行,但我想在你的情况下,TS 编译器会抛出一个错误(并且可能你的 IDE 将其标记为错误)。这是因为您的库 (.d.ts) 没有类型定义文件。最简单的修复方法是

declare var library: any;

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