2013-07-17 66 views
4

由于我想开始使用Google Analytics Cordova plugin,但我正在使用TypeScript编写所有JavaScript资源,所以我遇到了一些障碍。下面是我在具体问题的一个很好的例子:在PhoneGap/Cordova插件中使用TypeScript

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

打字稿不太愿意window.plugins,抛出编译错误:

The property 'plugins' does not exist on value of type 'Window'.

这使得完整意义上的。但是,我无法通过使用declare var window;语句来解决此问题,因为这会为窗口创建重复标识符。

回答

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; 
} 
+1

太棒了,谢谢! –