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

compactc生成的TypeScript目标文件为空是否符合预期?

Compact合约编译后生成空TypeScript结构的问题解答

问题背景

你的两个Compact合约代码如下:

  • a.compact:
module a {
   export sealed ledger num: Uint<8>;
}
  • b.compact:
import "a";

constructor() {
  num = 10;
}

使用compactc编译后生成的TypeScript文件中,Ledger、Circuits等核心类型均为空结构,这种情况不符合预期,问题出在合约的引用逻辑上。

原因分析

你在b合约中仅导入了a模块,但没有明确声明当前合约要复用a模块的ledger定义。Compact编译器不会自动关联导入模块的ledger到当前合约,因此无法识别你要将num作为合约状态的一部分,最终生成空的TypeScript类型结构。

修复方案

修改b.compact代码,明确声明当前合约的ledger继承自a模块的ledger:

import "a";

// 声明当前合约复用a模块的ledger定义
ledger a.ledger;

constructor() {
  num = 10;
}

预期结果

修复后重新编译,生成的TypeScript文件中Ledger类型会正确包含num字段:

export type Ledger = {
  num: number;
}

其他相关结构也会根据合约逻辑生成对应的定义,不再是空结构。

内容的提问来源于stack exchange,提问作者Petlover620

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:50:59