我遇到了一些障碍,因为我想开始使用Google Analytics Cordova plugin,但我正在使用TypeScript编写所有的javascript资源。以下是我遇到的具体问题的一个很好的例子:
window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");
window.plugins
处的TypeScript balks,抛出编译错误:
属性'plugins'在'Window'类型的值上不存在。
这完全合情合理。但是,我无法通过使用declare var window;
语句解决这个问题,因为这会为窗口创建重复的标识符。
答案 0 :(得分:16)
第一步是扩展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;
}