HarmonyOS 鸿蒙Next record<string,string> 不支持引用已定义的变量

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next record<string,string> 不支持引用已定义的变量

function test() {
  let key = "name"
  let params: Record<string, string> = { [key]: "tom" }
}

ts 中这种写法,在 arkts 中报错, 应该怎么写?

3 回复

您看下这样呢

function test() {
  let key = "name"
  let params: Map<string, string> = new Map()
  params.set(key, "123")
}

可以看下这样

test() {
  let key = "name";
  let value = "value";
  let params: Record<string, string> = {};
  params[key] = value;
}

可以根据报错,在文档中找一下适配办法,ts到arkts不是所有语法都支持

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typescript-to-arkts-migration-guide-V5

从TypeScript到ArkTS的适配规则

在HarmonyOS(鸿蒙)开发环境中,关于Next record<string,string>不支持引用已定义变量的问题,这通常与Java或Kotlin语言中的泛型及作用域规则有关。在鸿蒙的Java或Kotlin API中,record并不是一个原生支持的关键字或数据结构,这可能是你遇到问题的原因之一。在Java 14及以后的版本中,record作为一种预览特性被引入,用于简化数据载体的编写,但它与鸿蒙SDK的兼容性可能还未完全确立。

如果你的意图是使用类似Map的数据结构来存储键值对,并希望在其中引用已定义的变量,应确保:

  1. 变量在引用的作用域内是可见的。
  2. 使用正确的数据结构,如HashMap<String, String>
  3. 确保鸿蒙SDK版本与你使用的Java或Kotlin特性兼容。

例如,使用HashMap的代码可能如下:

HashMap<String, String> map = new HashMap<>();
String key = "exampleKey";
String value = "exampleValue";
map.put(key, value);

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。这将帮助你获得更专业的技术支持和解决方案。

回到顶部