用固定键值对是不报错的

const list: Record<string, number> = {
  "aa": 11,
  "bb": 22
}

键改成动态变量会报错:Objects with property names that are not identifiers are not supported (arkts-identifiers-as-prop-names) <ArkTSCheck>

const keya = "aa"
const keyb = "bb"
const list: Record<string, number> = {
  [keya]: 11,
  [keyb]: 22
}

现在这个报错是 ArkTS 语言的特有严格语法限制(和普通 TypeScript 无关)。在 ArkTS 中,为了配合方舟编译器进行严格的静态类型检查和性能优化,对象字面量 { ... } 内禁止直接使用方括号 [变量/枚举] 这种动态键语法。

ArkTS 官方文档明确规定:

对象字面量的属性名必须是标识符(即普通的 key: value 写法),不支持 [动态键]: value。

在 ArkTS 中,处理动态键的标准做法是:先创建一个空对象,然后通过「索引赋值」的方式逐个添加属性。

const keya = "aa"
const keyb = "bb"
const list: Record<string, number> = {}
list[keya] = 11
list[keyb] = 22
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐