我对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操作中是错误的吗?
感谢您的帮助!
答案 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的定义。
如果您怀疑这是错误的,并且success
和error
实际上可能会接受一个字符串,您可以将它们设为可选项,它仍会传递现有的类型检查:
private success(message?: string) {
//do Something
}
当然,如果类型定义错误,您可以使用正确的定义更新它并将其提交回绝对类型的项目......
exec(success: Function,
fail: (message: string) => any,
service: string,
action: string,
args?: string[]): void;
我在这里有不同的建议修复,基于一个假设......成功函数将在成功时传递特定的东西,可能是消息或对象(谁知道什么)。 fail函数将传递一个字符串消息。