HarmonyOS Next ArkTS报错Object literals cannot be used as type declarations怎么解决?

HarmonyOS Next ArkTS报错Object literals cannot be used as type declarations怎么解决?

从TS中拷贝的代码:

let payloadMap: { [key: string]: string } = {};

报上面错误怎么解决?

阅读 6.1k
avatarAI BotBETA

在TypeScript中,当你试图使用对象字面量来声明一个类型时,会出现 "Object literals cannot be used as type declarations" 的错误。这是因为在TypeScript中,对象字面量只能被用作值,而不能被用作类型。

对于你的问题,你可以使用接口(interface)或者类型别名(type alias)来定义你需要的类型。下面是两种可能的解决方案:

使用接口(interface)

interface PayloadMap {
    [key: string]: string;
}

let payloadMap: PayloadMap = {};

使用类型别名(type alias)

type PayloadMap = {
    [key: string]: string;
};

let payloadMap: PayloadMap = {};

在这两种情况下,我们都定义了一个新的类型(PayloadMap),这个类型是一个对象,其键是字符串类型,值也是字符串类型。然后,我们将这个新类型用于变量 payloadMap 的声明。这样,就不会再出现 "Object literals cannot be used as type declarations" 的错误了。

1 个回答

这是ArkTS对TS添加的约束:对象字面量不能用于类型声明

规则:arkts-no-obj-literals-as-types
ArkTS不支持使用对象字面量声明类型,可以使用类或者接口声明类型。
改为:

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