Nativescript:是否可以通过 typescript 访问 android sdk function/class?
Nativescript: is it possible to access android sdk function/class through typescript?
假设我有这个主要成分:
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" not found
错误。
我在 App_Resources/Android/app.gradle
文件中添加了 dependencies { compile 'com.google.android.gms:play-services-maps:9.8.0' }
。
我也检查了 nativescript-google-maps-sdk
插件是如何做到的。它似乎以相同的方式进行 - 它有自己的 nativescript-google-maps-sdk/platforms/android/include.gradle
文件,其中还定义了来自本地 android sdk 和 nativescript-google-maps-sdk/map-view.android.js
的 google 播放服务地图我看到它使用这样的命令没有问题:
var cameraUpdate = com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition( cameraPosition );
非常感谢任何见解。
将此添加到您的文件中
declare var com:any;
并阅读此
您需要先了解错误发生的原因 - 缺少任何 com
的 TypeScript 定义以及之后发生的事情。 com
不是 TypeScript 中的有效识别对象,也不是 JavaScript,因此您需要
A) (BAD) 指示 TypeScript 编译器不要抱怨缺少定义,因为你知道得更多,你知道 com.google.android.gms.maps.CameraUpdateFactory
是一个有效的对象。您在 tsconfig.json
中禁用 noEmitOnErrors
B) (GOOD) 与外星人 class 一起向 "acquaint" TSC 提供打字(它们通常以 .d.ts 的形式出现)。
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 一起导出并支持库类型。
假设我有这个主要成分:
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" not found
错误。
我在 App_Resources/Android/app.gradle
文件中添加了 dependencies { compile 'com.google.android.gms:play-services-maps:9.8.0' }
。
我也检查了 nativescript-google-maps-sdk
插件是如何做到的。它似乎以相同的方式进行 - 它有自己的 nativescript-google-maps-sdk/platforms/android/include.gradle
文件,其中还定义了来自本地 android sdk 和 nativescript-google-maps-sdk/map-view.android.js
的 google 播放服务地图我看到它使用这样的命令没有问题:
var cameraUpdate = com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition( cameraPosition );
非常感谢任何见解。
将此添加到您的文件中
declare var com:any;
并阅读此
您需要先了解错误发生的原因 - 缺少任何 com
的 TypeScript 定义以及之后发生的事情。 com
不是 TypeScript 中的有效识别对象,也不是 JavaScript,因此您需要
A) (BAD) 指示 TypeScript 编译器不要抱怨缺少定义,因为你知道得更多,你知道 com.google.android.gms.maps.CameraUpdateFactory
是一个有效的对象。您在 tsconfig.json
noEmitOnErrors
B) (GOOD) 与外星人 class 一起向 "acquaint" TSC 提供打字(它们通常以 .d.ts 的形式出现)。
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 一起导出并支持库类型。