课堂上课的定义?

时间:2016-06-20 18:11:02

标签: javascript typescript

我在TypeScript中定义以下JavaScript函数时遇到问题。

这就是我所拥有的(并希望TS定义文件支持):

myfile.ts:

this._scanCallback = new android.bluetooth.BluetoothAdapter.LeScanCallback({
    onLeScan: function (device: android.bluetooth.BluetoothDevice, rssi: number, scanRecord: Array<number>) {
    // FUNCTIONALITY ...
    }
})

这是我现有的定义文件,但onLeScan()无效。

def.d.ts:

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

对于我的定义应该是什么样的任何建议都会非常感激。

1 个答案:

答案 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的遗失引用除外)。