【问题标题】:Using TypeScript with PhoneGap/Cordova Plugins将 TypeScript 与 PhoneGap/Cordova 插件一起使用
【发布时间】:2013-07-17 18:42:35
【问题描述】:
我想开始使用 Google Analytics Cordova plugin 时遇到了一些障碍,但我正在使用 TypeScript 编写我的所有 javascript 资产。这是我遇到的具体问题的一个很好的例子:
window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");
TypeScript 拒绝 window.plugins,抛出编译错误:
“窗口”类型的值上不存在“插件”属性。
这是完全有道理的。但是,我无法通过使用 declare var window; 语句来解决此问题,因为这会为 window.created 生成一个重复的标识符。
【问题讨论】:
标签:
cordova
typescript
phonegap-plugins
【解决方案1】:
第一步是扩展Window接口,你可以这样做:
interface Window {
plugins: any;
}
这意味着没有编译器错误,但除非你扩展定义,否则它意味着没有自动完成。所以这条线现在可以工作了:
window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");
为了让事情更上一层楼并让自己自动完成(并且还要检查你的拼写),您可以使用这个定义的扩展版本。
interface GoogleAnalyticsPlugin {
startTrackerWithAccountID(accountId: string): void;
}
interface Plugins {
googleAnalyticsPlugin: GoogleAnalyticsPlugin;
}
interface Window {
plugins: Plugins;
}