angularjs - 使用 Typescript 的 Ionic 1 应用程序中的 Cordova 插件

标签 angularjs typescript ionic-framework

我是 Typescript 的新手。我刚刚开始使用 Typescript 的 Ionic 1.2.4 (Angular) 项目。转译时,我收到错误消息 Property 'Keyboard' does not exist on type 'CordovaPlugins'由于以下函数传递给 angular.module.run()在文件中 run.ts

///<reference path="../../typings/tsd.d.ts"/>

export function onRun($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if (window.StatusBar) {
      StatusBar.styleDefault();
    }
  })
}

cordova 插件实际上已经安装,并且它的类型定义文件确实存在。这是文件 tsd.d.ts .

/// <reference path="angularjs/angular.d.ts" />
/// <reference path="cordova/cordova.d.ts" />
/// <reference path="cordova/plugins/BatteryStatus.d.ts" />
/// <reference path="cordova/plugins/Camera.d.ts" />
/// <reference path="cordova/plugins/Contacts.d.ts" />
/// <reference path="cordova/plugins/Device.d.ts" />
/// <reference path="cordova/plugins/DeviceMotion.d.ts" />
/// <reference path="cordova/plugins/DeviceOrientation.d.ts" />
/// <reference path="cordova/plugins/Dialogs.d.ts" />
/// <reference path="cordova/plugins/FileSystem.d.ts" />
/// <reference path="cordova/plugins/FileTransfer.d.ts" />
/// <reference path="cordova/plugins/Globalization.d.ts" />
/// <reference path="cordova/plugins/InAppBrowser.d.ts" />
/// <reference path="cordova/plugins/Keyboard.d.ts" />
/// <reference path="cordova/plugins/Media.d.ts" />
/// <reference path="cordova/plugins/MediaCapture.d.ts" />
/// <reference path="cordova/plugins/NetworkInformation.d.ts" />
/// <reference path="cordova/plugins/Push.d.ts" />
/// <reference path="cordova/plugins/Splashscreen.d.ts" />
/// <reference path="cordova/plugins/StatusBar.d.ts" />
/// <reference path="cordova/plugins/Vibration.d.ts" />
/// <reference path="cordova/plugins/WebSQL.d.ts" />
/// <reference path="ionic/ionic.d.ts" />
/// <reference path="jquery/jquery.d.ts" />

我还尝试将键盘的类型定义直接放在 run.ts 中. ///<reference path="../../typings/cordova/plugins/Keyboard.d.ts"/>

我不希望插件实际注册,因为“cordova.js”在构建/打包应用程序之前不可用。但是我想知道如何让 Typescript 识别 Keyboard实际上确实存在于cordova.plugins通过类型定义。否则,如何在转译过程中避免此错误?

最佳答案

安装typescript定义时,我没有安装cordova-ionic。 “标准”cordova 键盘插件不同于 cordova-ionic 键盘插件。

tsd install cordova-ionic --save 修复了这个问题。

糟糕。

关于angularjs - 使用 Typescript 的 Ionic 1 应用程序中的 Cordova 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821091/

相关文章:

javascript - 抽象状态如何在 Ionic 中工作?

html - 如何修复未捕获的 ReferenceError : play is not defined at HTMLButtonElement. onclick

javascript - 在 IE9/Angular 5/TypeScript 上使用 FormData,无需 Ajax 或 jQuery

javascript - 属性 'x' 是私有(private)的,只能在类 'y' 内访问

javascript - 从 PhotoLibrary 中选取图像不起作用 - Ionic 4

javascript - 根据内容动态增加 ng-grid 行高,无需额外的插件和 jquery

javascript - 使用替换时, Angular 隔离范围值在模板中不可见

javascript - getLocationAbsUrl 与 getCurrentUrl

multidimensional-array - Typescript - 多维数组初始化

node.js - 无法启动新的 ionic 项目