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

调用storage.get获取u64值默认返回0时报u64不可为null错误如何解决

错误产生原因
  • AssemblyScript 语法规则限定u64这类64位基础数值类型属于非可空值类型,不能和null组成联合类型。
  • storage.get泛型方法的官方定义中,默认值参数、返回值的类型都声明为T | null,当你显式指定泛型T为u64时,实例化的方法会出现u64 | null这个不符合语法的类型,直接触发编译错误,和你后续写的|| u64(0)兜底逻辑无关。
修复方案

方案1(推荐):使用u64专属读取方法

NEAR SDK 内置了专门针对基础数值类型的读取方法,不会触发可空类型校验,直接调用storage.getUint64即可:

const lastDeposit = storage.getUint64('lastDeposit', u64(0));

方案2:先判断键存在性再使用泛型读取

如果需要沿用storage.get泛型方法,可以先通过contains方法判断键是否存在,存在时才执行读取,避免触发null返回逻辑:

const lastDeposit: u64 = storage.contains('lastDeposit')
  ? storage.get<u64>('lastDeposit')
  : u64(0)

内容的提问来源于stack exchange,提问作者Minh Thành

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:09:01