使用Stencil @Event装饰器时构建失败,疑与Event参数方法冲突
Stencil @Event与DOM Event类型冲突的解决方案
这是类型命名冲突导致的问题:Stencil的@Event装饰器会在组件作用域内生成一个同名的Event相关类型,和你方法里用到的原生DOM Event类型重名了,TypeScript解析时混淆了两者,才会出现无明确报错但构建失败、方法返回值处标红的情况。
具体解决办法
显式指定原生Event类型:把方法里的
Event参数改成globalThis.Event,明确告诉TypeScript用全局DOM的Event类型,避免和Stencil生成的类型混淆:async handleFormSubmit(event: globalThis.Event): Promise<void> { // 你的表单处理逻辑 }重命名Stencil的Event相关导入(如果手动导入了):如果是自己导入了Stencil的
Event类型,直接给它起别名:import { Event as StencilEvent, EventEmitter } from '@stencil/core'; @StencilEvent() formInputChange: EventEmitter<{ value: string }>;给自定义事件起更具体的名字:别用
Event这种通用名称命名你的自定义事件,换成和业务相关的名字,比如formValueSubmitted,从根源避免命名冲突:@Event() formValueSubmitted: EventEmitter<FormData>;
验证修改
改完之后重新跑构建命令:
npm run build
要是标红消失、构建成功,就说明冲突解决了。
内容的提问来源于stack exchange,提问作者PlayHardGoPro
相关产品推荐
相关产品推荐

