【问题标题】:Error when using global variables from es5-library in typescript在 typescript 中使用 es5-library 中的全局变量时出错
【发布时间】:2016-10-13 14:08:44
【问题描述】:

我正在使用 Angular 2 和 Ionic 开发应用程序。我正在为 Cordova 使用蓝牙库,因此不使用 ES6 模块和导出进行编写。

该库定义了一个名为“bluetoothle”的全局变量,当我运行它时它会按预期工作。但是,我收到了很多来自 typescript 编译器的抱怨。我愿意:

  • (首选)有更好的方法将 ES5 库导入我的 typescript 项目。
  • 告诉编译器忽略这个错误。
  • 声明变量,然后让库为其赋值(但是,我不知道如何在打字稿中声明全局变量,就像在 ES6 中那样。

提前致谢, 马库斯

【问题讨论】:

  • 你是如何导入库的?
  • 我正在使用 Ionic,它反过来包裹了 Cordova。我通过cordova cli导入了它,并且在cordova-project中有一个xml文件,其中包含以下内容: 我猜这是cordova在内部以某种方式处理的。
  • 呃,我的意思是在你的打字稿文件中
  • 因为它是全局定义的,我只是引用它。我根本不导入它,它就在那里。在运行时这有效,但编译器不理解这一点。

标签: dependency-injection typescript angular ecmascript-6


【解决方案1】:

你有两个选项,这取决于你想在其中投入多少工作。

第一个也是简单的选择是在顶部声明变量。这将告诉 TypeScript 这是一个 any 类型的变量,它不需要关心它来自哪里或它有哪些成员:

declare var bluetoothle;

另一条更简洁但工作量更大的路线是写一个type definition file

【讨论】:

  • 太棒了!我现在采取了简单的路线,我们将看看它会如何。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
相关资源
最近更新 更多