4

我遇到了一些障碍,因为我想开始使用Google Analytics Cordova 插件,但我正在使用 TypeScript 编写我的所有 javascript 资产。这是我遇到的具体问题的一个很好的例子:

window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");

TypeScript 犹豫不决window.plugins,引发编译错误:

“窗口”类型的值不存在“插件”属性。

这是完全有道理的。但是,我无法通过使用declare var window;语句来解决这个问题,因为这会为 window.created 创建一个重复的标识符。

4

1 回答 1

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;
}
于 2013-07-17T18:58:03.387 回答