angularjs - Cordova-plugins i Ionic 1-app ved bruk av Typescript
Jeg er ny på Typescript. Jeg har nettopp startet et Ionic 1.2.4 (Angular) prosjekt ved hjelp av Typescript. Når jeg transpilerer, får jeg feilmeldingen Property 'Keyboard' does not exist on type 'CordovaPlugins' på grunn av følgende funksjon sendt til angular.module.run() i en fil 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-pluginet er faktisk installert, og dets typedefinisjonsfil eksisterer definitivt. Her er filen 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" />
Jeg har også prøvd å plassere typedefinisjonen for Keyboard direkte i run.ts. ///<reference path="../../typings/cordova/plugins/Keyboard.d.ts"/>
Jeg forventer ikke at pluginen faktisk registreres fordi 'cordova.js' ikke er tilgjengelig før appen er bygget/pakket. Jeg vil imidlertid gjerne vite hvordan man får Typescript til å gjenkjenne at Keyboard faktisk eksisterer på cordova.plugins via type-definisjoner. Ellers, hvordan kan jeg unngå denne feilen under transpilering?
Svar #1
Når jeg installerte TypeScript-definisjoner, installerte jeg ikke cordova-ionic. Den "standard" Cordova Keyboard-pluginen er forskjellig fra Cordova-ionic Keyboard-pluginen.
tsd install cordova-ionic --save løste problemet.
Oi.