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