HarmonyOS 鸿蒙Next:当一个函数的参数是对象类型时,如何定义形参的类型

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:当一个函数的参数是对象类型时,如何定义形参的类型 (小白求问)如图所示,定义了一个函数,接收一个对象类型的参数,并返回字符串。该怎么去定义这个对象参数的类型,才能在调用时传入一个对象而不报错。

cke_2315.png


更多关于HarmonyOS 鸿蒙Next:当一个函数的参数是对象类型时,如何定义形参的类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

这个报错很明显,Argument of type ‘p’ is not assignable to parameter of type ‘Record<string, string | number>’,意思是:你的方法的入参类类型是:Record<string, string | number> 这边却传入了p所以报错,你想要问的问题也没看懂。麻烦详细描述下具体问题并提供代码

更多关于HarmonyOS 鸿蒙Next:当一个函数的参数是对象类型时,如何定义形参的类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


export function sortParams(params: Record<string, string>) {
  let str = ''
  Object.keys(params).forEach((key) => {
    str += `${key}=${params[key]}&`
  })
  return str.slice(0, -1)
}

interface Person {
  name: string
}

let people: Person = { name: 'zs' }

let pstr = sortParams(people)

直接这样传不行吗?为什么要整一个Record<>?没太理解,

在HarmonyOS(鸿蒙)系统中,当一个函数的参数是对象类型时,定义形参类型的方式通常依赖于你使用的编程语言及其对象系统的特性。由于你明确要求不回答与Java或C语言相关的内容,这里假设你是在使用鸿蒙系统支持的另一种面向对象编程语言(例如C++、C#或Dart,这些语言在鸿蒙开发中可能会有所应用,尽管鸿蒙主要使用其自研的ArkUI框架和eTS语言,后者可能基于JavaScript/TypeScript)。

在面向对象编程语言中,定义一个接受对象作为参数的函数时,形参类型应为该对象的类或接口类型。例如,在C++中,如果有一个名为MyClass的类,你可以这样定义一个函数:

void myFunction(MyClass obj) {
    // 函数体
}

或者,如果你希望传递对象的引用或指针以避免复制开销,可以这样写:

void myFunction(MyClass& ref) {
    // 函数体
}

// 或者使用指针
void myFunction(MyClass* ptr) {
    // 函数体
}

在其他面向对象语言中,语法可能略有不同,但基本概念相同:形参类型应为你希望传递的对象类型。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部