HarmonyOS 编译阶段报错如下,不知道为何会有如此的报错。
编译阶段报错
Object literal must correspond to some explicitly declared class or interface (ArkTS-no-untyped-obj-literals) <ArkTSCheck>
代码如下:
window: ArkTSFunModel = {
setTokenInfo: (tokenJson: string) => this.setTokenInfo(tokenJson),
routerPush: (page: string) => this.routerPush(page),
routerPushWeb: (url: string) => this.routerPushWeb(url),
__dcloud_weex_postMessage: (json: string) => this.postMessage(json)
};
export interface ArkTSFunModel {
__dcloud_weex_postMessage: (json: string) => void;
setTokenInfo: (tokenJson: string) => void;
routerPush: (page: string) => void;
routerPushWeb: (url: string) => void;
}
不知道为何会有如此的报错。
HarmonyOS
赞
收藏 0
回答 3
待解决
相关问题
学习驱动开发的时候,环境编译有如下报错
2694浏览 • 0回复 待解决
Harmony混淆文件不知道安装的个什么就开始报错了?
3805浏览 • 1回复 待解决
#鸿蒙学习大百科#hvigorw不知道为什么突然不能用了,求大佬指导?
144浏览 • 1回复 待解决
编译报错Found exception如下
1199浏览 • 1回复 待解决
开发者账号绑定问题,不知道大家遇到没
10994浏览 • 3回复 待解决
我想使用鸿蒙自带的分词功能,但是不知道怎么使用
7516浏览 • 1回复 待解决
HarmonyOS webview默认不知道哪里来的背景色,请问怎么去掉?
112浏览 • 1回复 待解决
如下代码报错,报错原因是什么?
323浏览 • 1回复 待解决
无法创建相机,不知道哪里出错了,大佬帮忙看看
4833浏览 • 1回复 待解决
HarmonyOS ArkUI有如下效果的组件吗?
172浏览 • 1回复 待解决
怎样在不知道UIAbility的时候下通过隐式want将应用拉起?
349浏览 • 1回复 待解决
ob有如何下报错,麻烦帮忙看一下?
4821浏览 • 1回复 待解决
HarmonyOS tab标签如何左对齐,目前测试是局中显示,不知道如何调整?
162浏览 • 1回复 待解决
app编译经常出现如下报错该怎么解决呢?
48浏览 • 1回复 待解决
使用featureAbility.getContext()时报错如下
514浏览 • 1回复 待解决
为何执行terminateAbility后拉起Ability会报错
1912浏览 • 1回复 待解决
HarmonyOS使用ArkTS提供的fs读文件,其中ReadTextOptions报错如下:
270浏览 • 1回复 待解决
HarmonyOS native audio 录制编译报错
105浏览 • 1回复 待解决
HarmonyOS 应用图标大小只有144*144,这种设计同学不知道规范,还需要多大尺寸的icon?
273浏览 • 1回复 待解决
开发自定义弹窗时报错如下
566浏览 • 1回复 待解决
编译报错没有堆栈信息
807浏览 • 1回复 待解决
openharmony 交叉编译openjdk报错
726浏览 • 1回复 待解决
在color.json文件中写注释报错如下
540浏览 • 1回复 待解决
初次安装DevEco Studio编译报错
7814浏览 • 1回复 待解决
查询应用信息方法编译报错
66浏览 • 1回复 待解决
在 HarmonyOS 的 ArkTS 中,出现
ArkTS-no-untyped-obj-literals
错误,通常是因为对象字面量赋值时没有类型注解或接口的显式声明。根据你的描述和提供的代码,问题出现在你为 window
变量分配一个对象字面量时没有明确指定其类型。为了确保对象字面量符合指定的接口类型,你需要明确地将该对象与接口关联起来。以下是修正后的代码示例:
### 修正代码
### 解释
确保接口定义包含你期望的所有方法。
注意这里使用了类型注解
ArkTSFunModel
明确表示对象 windowImpl
实现了该接口。window
:这样可以确保
window
变量具有正确的类型,并满足编译器的检查要求。通过这种方式,编译器能够确保你创建的对象与接口
ArkTSFunModel
相匹配,从而避免了类型检查错误。demo如下:
可以参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-more-cases.md#arkts-no-untyped-obj-literals里面介绍了一些规范。
可爱的开发者,你好
上面老师的回答非常到位,我在此基础上再详细解释一下。
首先,我们得知道这个问题是什么 Object literal must correspond to some explicitly declared class or interface (ArkTS-no-untyped-obj-literals) <ArkTSCheck> ,大白话就是“对象字面量必须对应于某个显式声明的类或接口”,进而我们就可以知道,是定义的字面量的问题
接口的分析
看了一下,定义一个叫做
ArkTSFunModel
的接口,我们一一看一下接口成员的情况:__dcloud_weex_postMessage
:这个方法负责接收一个字符串参数,并处理发送消息的操作,但不返回任何结果。setTokenInfo
:此方法接收一个字符串参数,用于设置令牌(Token)信息,同样不返回任何结果。routerPush
:该方法通过接收一个字符串参数,实现页面跳转的逻辑,也不提供返回值。routerPushWeb
:与routerPush
类似,这个方法使应用能够根据提供的字符串参数在内部打开网页,同样没有返回值。let window 初始化分析
注意,接口定义了四个方法构成了
ArkTSFunModel
接口的核心功能,他们均以void作为返回类型,即不返回任何数据。
所以你在初始化的时候,通过
this
关键字来引用封装自定义的方法,必须确保这些方法的实现与你在接口中定义的结构一致。这包括明确指定每个方法接收的参数数量、参数的类型以及是否有返回值。这样做是为了避免泛化定义,导致的编译错误。