【发布时间】:2020-08-08 22:39:45
【问题描述】:
我正在尝试在使用 Angular 9 实现的 SPA 中使用 Twitter Lite 库 (https://www.npmjs.com/package/twitter-lite)。Twitter Lite 是一个 JavaScript 库,其中包含用于支持 TypeScript 的类型。
根据打字(https://github.com/draftbit/twitter-lite/blob/master/index.d.ts)中给出的示例,我将主类导入其中一个组件(我们称之为 TwitterComponent):
import { Twitter } from 'twitter-lite';
然后在组件中使用类:
const twitter = new Twitter({
consumer_key: 'XYZ',
consumer_secret: 'XYZ',
access_token_key: 'XYZ',
access_token_secret: 'XYZ'
});
代码编译良好,但导航到 TwitterComponent 所属模块下的任何组件都会导致此错误:
未捕获(承诺):ReferenceError:未定义全局
在支持 TS 的情况下,使用这样的 JS 库的正确方法是什么?模块应该导入一些东西吗?还是这个错误更可能与 Twitter Lite 本身的实现方式有关?
如果您建议像这样导入库:
import * as Twitter from 'twitter-lite';
它为启动类的代码给出了这个编译时错误:
这个表达式是不可构造的。类型“typeof TwitterLite”没有构造签名。
这本身就很奇怪,因为该类确实定义了构造函数。
【问题讨论】:
-
这是因为命名空间被导出而不是类。
-
我可以编辑类型以自己导出课程吗?
-
我不认为浪费时间编辑这个文件是个好主意。您是否尝试将软件包更新到最新版本(v0.10.1-0)?它包括您的问题的解决方案。
-
那是我已经在使用的版本。从未使用过以前的版本
标签: angular typescript