我在TypeScript中定义以下JavaScript函数时遇到问题。
这就是我所拥有的(并希望TS定义文件支持):
this._scanCallback = new android.bluetooth.BluetoothAdapter.LeScanCallback({
onLeScan: function (device: android.bluetooth.BluetoothDevice, rssi: number, scanRecord: Array<number>) {
// FUNCTIONALITY ...
}
})
这是我现有的定义文件,但onLeScan()
无效。
export module android {
export class bluetooth {
export class BluetoothAdapter extends java.lang.Object {
static xyz: number;
public abcd(): boolean;
}
export namespace BluetoothAdapter {
export class LeScanCallback(
onLeScan(device: android.bluetooth.BluetoothDevice, rssi: number, scanRecord: Array<number>): void;
){}
}
}
}
我需要能够访问android.bluetooth.BluetoothAdapter.LeScanCallback()
函数,输入参数需要onLeScan
回调函数,以便 myfile.ts 中的代码段通过ts编译。目前我正在:
[ts]提供的参数与呼叫目标的任何签名都不匹配。 构造函数android.bluetooth.BluetoothAdapter.LeScanCallback():android.bluetooth.BluetoothAdapter.LeScanCallback
对于我的定义应该是什么样的任何建议都会非常感激。
答案 0 :(得分:0)
看起来您需要将问题分解为可管理的块。从最里面到最外面,你需要:
onLeScan()
,LeScanCallback
的类,它在其构造函数中获取上述类或接口的实例,BluetoothAdapter
的模块或命名空间,其中包含LeScanCallback类和BluetoothAdapter
的类,有一些随机属性。以下是我将如何解决这个问题。您的里程可能会有所不同。
export module android.bluetooth {
export interface BluetoothDevice {}
export class BluetoothAdapter extends java.lang.Object {
static xyz: number;
public abcd(): boolean;
}
}
export module android.bluetooth.BluetoothAdapter {
export interface LeScanCallbackArgument {
onLeScan(device: android.bluetooth.BluetoothDevice, rssi: number, scanRecord: Array<number>);
}
export class LeScanCallback {
constructor(callback: LeScanCallbackArgument) {}
}
}
this._scanCallback = new android.bluetooth.BluetoothAdapter.LeScanCallback({
onLeScan: function (device: android.bluetooth.BluetoothDevice, rssi: number, scanRecord: Array<number>) {
// FUNCTIONALITY ...
}
})
这会在TypeScript Playground处编译(java.lang.Object
的遗失引用除外)。