将TypeScript与PhoneGap/Cordova插件配合使用

Rob*_*uer 4 phonegap-plugins cordova typescript

我想要开始使用Google Analytics Cordova插件,但是我正在使用TypeScript组合我的所有javascript资源,我遇到了一些障碍.以下是我遇到的具体问题的一个很好的例子:

window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");
Run Code Online (Sandbox Code Playgroud)

TypeScript瘫痪window.plugins,抛出编译错误:

属性"插件"在"Window"类型的值上不存在.

这完全合情合理.但是,我无法通过使用declare var window;语句解决这个问题,因为这会为窗口创建重复的标识符.

Fen*_*ton 16

第一步是扩展Window界面,你可以这样做:

interface Window {
    plugins: any;
}
Run Code Online (Sandbox Code Playgroud)

这意味着没有编译器错误,但除非你扩展定义,否则意味着没有自动完成.所以这条线现在可以工作:

window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("UA-xxxxxxx-x");
Run Code Online (Sandbox Code Playgroud)

为了使事情变得更好并且让自己完成一些自动完成(并且还要检查拼写),您可以使用此扩展版本的定义.

interface GoogleAnalyticsPlugin {
    startTrackerWithAccountID(accountId: string): void;
}

interface Plugins {
    googleAnalyticsPlugin: GoogleAnalyticsPlugin;
}

interface Window {
    plugins: Plugins;
}
Run Code Online (Sandbox Code Playgroud)