Nativescript:是否可以通过typescript访问android sdk函数/类?
假设我有一个主要组件:Nativescript:是否可以通过typescript访问android sdk函数/类?,typescript,nativescript,Typescript,Nativescript,假设我有一个主要组件: import { Component } from "@angular/core"; @Component({ selector: "my-app", templateUrl: "./layouts/main-layout.html" }) export class AppComponent { constructor( ){} ngAfterViewInit() { //console.log( com.g
import { Component } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./layouts/main-layout.html"
})
export class AppComponent {
constructor(
){}
ngAfterViewInit() {
//console.log( com.google.android.gms.maps.CameraUpdateFactory );
}
}
如何调用app.component.ts中的注释掉的函数
因为它给我“com”找不到
错误
我在App\u Resources/android/App.gradle
文件中添加了依赖项{compile'com.google.android.gms:play services maps:9.8.0'}
我还检查了nativescript谷歌地图sdk
插件是如何实现的。它似乎也是这样做的——它有自己的nativescript谷歌地图sdk/platforms/android/include.gradle
文件,其中还定义了本地android sdk中的google play服务地图,在nativescript谷歌地图sdk/map view.android.js中,我看到它使用这样一个命令没有问题:
var cameraUpdate=com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition(cameraPosition)代码>
非常感谢您的任何见解。将此添加到您的文件中
声明var com:any代码>
同时也要阅读这篇文章
您需要首先了解发生错误的原因-缺少任何com
的TypeScript定义,以及随后出现的错误com
在TypeScript或JavaScript中都不是有效的可识别对象,因此您需要
A) (错误)指示TypeScript编译器不要抱怨缺少定义,因为您更清楚,您知道com.google.android.gms.maps.CameraUpdateFactory
是有效的对象。在tsconfig.json
B) (好)提供打字(通常以.d.T.的形式提供),以“熟悉”TSC与外来类别
declare module com {
export module google {
export module android {
export module gms {
export module maps {
export class CameraUpdateFactory {
public static newCameraPosition(param0: any): any
}
}
}
}
}
}
let cameraUpdate: any = com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition;
如果您无法描述整个名称空间,请使用let com:any
。可以为android/java库自动生成键入,但TypeScript/JavaScript中存在一定的限制,目前阻止我们将google android库键入与android.sdk一起导出并支持库键入。Omg,我怎么能忘记先声明它…:哈哈,是的,快速又好的修复,现在我可以访问类/对象/函数了。荣誉但奇怪的是,当我将依赖项{compile'com.google.android.gms:play services maps:9.8.0'}
包括在内时,我的应用程序确实编译和构建得很好,但当我在安卓手机上打开它时,它立即崩溃。所以我删除了这个依赖项,现在它没有崩溃,但是,我从哪里得到那个sdk类呢?我猜-我的应用程序使用nativescript谷歌地图sdk
插件,它使用android sdk中的谷歌地图。因此,如果我在我的项目中包含这个插件,它将构建一个对这个应用程序内google对象的全局引用,这就是为什么当我使用console.log在AppComponent中访问它时,我不会抛出错误。顺便问一下,我如何扩展我现在拥有引用的类?当我执行类FBMessagingService extensed com.google.firebase.messaging.FirebaseMessagingService{}
时,我会收到一个错误,说Type any不是构造函数函数类型
@Starwave,你可以按照我在下面解释的那样做->如果无法使用TypeScript描述整个结构。这是很多样板文件,但它是与JavaScript的折衷方案之一。或者只是在带有未识别属性的行上方注释/@ts ignore
。