You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

The Graph开发中AssemblyScript定义对象报类型不匹配错误

报错原因

这个TS2322是Subgraph基于AssemblyScript编译时的类型不匹配错误,本质是你在代码中将FARMS_CONTRACT_NAMES对象或它的字符串属性值,赋值给了一个预先声明为i32(32位整数)类型的变量/实体字段。
常见触发场景包括:

  • schema.graphql中对应实体的字段定义为Int类型,但你在mapping逻辑中试图把FARMS_CONTRACT_NAMES的字符串属性赋值给该字段
  • 你在Mapping代码中声明了i32类型的变量,后续赋值时传入了字符串或整个对象
  • 你将字符串类型的属性值作为数组下标使用,而数组下标要求必须是i32类型
解决方案

先根据报错日志提示的文件行号,定位到具体的赋值逻辑位置,再根据业务需求选择对应修正方案:

  • 若业务需要存储整数类型的农场枚举值:将现有字符串常量对象改为数值枚举,示例代码如下:
export enum FarmType {
  BALANCER_LIQUIDITY = 0,
  GIV_LIQUIDITY = 1,
  GIV_ETH = 2,
  GIV_HNY = 3
}

后续赋值时直接传入FarmType.BALANCER_LIQUIDITY这类枚举值即可匹配i32类型要求。

  • 若业务需要存储字符串类型的农场名称:调整类型定义,把接收值的变量/实体字段类型从i32/Int改为string/String即可。
  • 若误将整个FARMS_CONTRACT_NAMES对象传入,修正为取对应属性值即可。

内容的提问来源于stack exchange,提问作者Mohammad Ranjbar Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:45:03