在HarmonyOS开发中ArkTS语法的问题?

在HarmonyOS开发中ArkTS语法的问题?问题描述:
class ISubPageParams {}

代码1:

interface IDevToolParams { 
  /** 
   * 打开调试页面的二级页面 
   * @param url 
   * @param params 
   */ 
  openSubPage(params: ISubPageParams): void 
  // openSubPage: (params: ISubPageParams) => void, 
  name:string 
} 
 
const params: IDevToolParams = { 
  openSubPage: (params: ISubPageParams) => { 
 
  }, 
  name:"999" 
} 

按代码1的写法,会报编译错误:Object literal must correspond to some explicitly declared class or interface (ArkTS-no-untyped-obj-literals) <ArkTSCheck>

代码2:

interface IDevToolParams { 
  /** 
   * 打开调试页面的二级页面 
   * @param url 
   * @param params 
   */ 
  openSubPage: (params: ISubPageParams) => void, 
  name:string 
} 
 
const params: IDevToolParams = { 
  openSubPage: (params: ISubPageParams) => { 
 
  }, 
  name:"999" 
}

按代码2这样写确没有报错,这是为什么?

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 682
1 个回答

方式1中IDevToolParams 定义的接口中的方法是openSubPage(params: ISubPageParams): void,即返回值是空的一个方法,而实现类却是openSubPage: (params: ISubPageParams) => {
}这是将openSubPage方法定义为((params: ISubPageParams)=> {} 类型,类型不一样,所以找不到了。
但方式2定义和实现是一样的,所以没报错。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进