使用TypeScript在Cordova.exec中的回调函数

时间:2014-11-26 14:18:14

标签: javascript cordova typescript

我对Cordova的TypeScript定义有疑问。

codrova.d.ts文件允许成功回调和错误回调没有函数参数。

为了更好地理解我的问题一个小例子:

这是cordova.d.ts文件的原始代码

exec(success: () => any, fail: () => any, service: string, action: string, args?: string[]): void;

现在我想写一个类似于此结构的打字稿类

module Plugin { 

export class {

constructor(){
cordova.exec(this.success,this.error,"Service","Action",null);
}

private success(message:string)
{
   //do Something
}

private error(message:string)
{
   //do Something
}

现在我在cordova.exec调用行中出现错误消息,成功和错误的函数签名匹配如此(消息:字符串)=> void和()=>任何不是兼容。

我的问题是,如果呼叫成功与否,我如何使用回调参数向平台独立方提供更详细的信息。

或者在cordova.d.ts操作中是错误的吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

快速修复

您需要对示例代码进行一些修复...

module Example {

    class Test {

        constructor() {
            cordova.exec(this.success, this.error, "Service", "Action", null);
        }

        private success() {
            //do Something
        }

        private error() {
            //do Something
        }
    }
}

这传递了Cordova的定义。

如果您怀疑这是错误的,并且successerror实际上可能会接受一个字符串,您可以将它们设为可选项,它仍会传递现有的类型检查:

private success(message?: string) {
    //do Something
}

正确修复

当然,如果类型定义错误,您可以使用正确的定义更新它并将其提交回绝对类型的项目......

exec(success: Function,
    fail: (message: string) => any,
    service: string,
    action: string,
    args?: string[]): void;

我在这里有不同的建议修复,基于一个假设......成功函数将在成功时传递特定的东西,可能是消息或对象(谁知道什么)。 fail函数将传递一个字符串消息。