Coinbase Webhook获取metadata遇TypeScript类型错误求助
解决Coinbase Webhook获取metadata的TypeScript类型错误
出现这个错误是因为Coinbase的类型定义中,event.data是ChargeResource | CheckoutResource的联合类型——虽然你已经通过event.type === "charge:confirmed"判断了事件类型,但TypeScript无法自动将event.data的类型窄化为ChargeResource(只有该类型包含metadata属性),需要手动处理类型窄化:
方法一:类型断言(快速直接)
直接将event.data断言为ChargeResource,因为当事件类型为charge:confirmed时,event.data必然是Charge类型:
if (event.type === "charge:confirmed") { const metadata = (event.data as ChargeResource).metadata; // 执行数据库写入、发送邮件等逻辑 }
方法二:自定义类型守卫(更严谨)
如果希望代码更健壮,可以写一个类型守卫函数,让TypeScript自动识别类型:
// 定义类型守卫函数 function isChargeResource(data: ChargeResource | CheckoutResource): data is ChargeResource { return 'metadata' in data; } // 在逻辑中使用 if (event.type === "charge:confirmed" && isChargeResource(event.data)) { const metadata = event.data.metadata; // 执行后续业务逻辑 }
这两种方法都能解决TypeScript的类型报错,同时保证你能正确获取创建charge时传入的metadata。
内容的提问来源于stack exchange,提问作者saolu
相关产品推荐
相关产品推荐

