#subgraph #assemblyscript #thegraph
Вопрос:
Я разрабатываю подграф для индексирования событий блокчейна, но я получаю ошибку при определении и объекте
⠋ Compile subgraphERROR TS2322: Type 'lt;objectgt;' is not assignable to type 'i32'. export const FARMS_CONTRACT_NAMES = { BALANCER_LIQUIDITY: 'balancerLiquidity', GIV_LIQUIDITY: 'givLiquidity', GIV_ETH: 'givETH', GIV_HNY: 'givHny' };
Ответ №1:
После некоторых проб и ошибок изменение этого таким образом решило мою проблему:
export const BALANCER_LIQUIDITY = 'balancerLM'; export const GIV_LIQUIDITY = 'givLM'; export const GARDEN_POOL = 'gardenPool'; export const GIV_ETH = 'givETH'; export const GIV_HNY = 'givHNYPool';
Я думаю, что у скрипта сборки есть проблемы с определением объектов ( во входных параметрах функций вы не можете использовать object {} )
Ответ №2:
Если вы хотите использовать объект для своей конфигурации, вам необходимо определить для него класс, так как AS не имеет неявных объектов:
class Config { BALANCER_LIQUIDITY: string; GIV_LIQUIDITY: string; GIV_ETH: string; GIV_HNY: string; } export const FARMS_CONTRACT_NAMES: Config = { BALANCER_LIQUIDITY: 'balancerLiquidity', GIV_LIQUIDITY: 'givLiquidity', GIV_ETH: 'givETH', GIV_HNY: 'givHny' };
Но экспорт значений по отдельности также имеет свои преимущества:
- Меньше исходного кода
- Вы можете импортировать только части конфигурации
- Никаких накладных расходов класса
Комментарии:
1. Хорошая идея, приятно это знать, это помогло бы мне в других ситуациях