arkts中这样注册回调函数报错怎么解决?
arkts文件中声明了一个接口:
export interface Callback{
a():void;
b(num:number):void;
}
代码逻辑中实现一个注册回调接口的函数:
registerCalblack(callback:Callback){
}
通过下面代码调用注册接口函数:
registerCallbck({
a:()=>{
},
b:(num:number)=>{
}
});
编译时报错:arkts-no-untyped-obj-literals,但是Callback放在ts文件中定义就没有问题,什么原因呢?
这种类似匿名内部类的方式Android上很常见,ts中也可以,但是arkts对这种情况进行了约束:
需要显式标注对象字面量的类型
规则:arkts-no-untyped-obj-literals
在ArkTS中,需要显式标注对象字面量的类型,否则,将发生编译时错误。在某些场景下,编译器可以根据上下文推断出字面量的类型。
在以下上下文中不支持使用字面量初始化类和接口: