不能将类型“(value: string) => void”分配给类型“(payload: Event) => void

3,644 阅读1分钟

elementPlus使用select和switch组件的change时报错:

vue的vscode插件(volar)会对template部分进行ts语法分析,会为默认事件添加对应的类型。这样导致出现ts类型校验出错

"不能将类型“(value: string) => void”分配给类型“(payload: Event) => void”。 参数“value”和“payload” 的类型不兼容。",

image-20220309090355696

如何解决?,这个时候本来想去去elementplus和volar的issues提出问题

后来发现在2021年12月的时候volar版本就出过类似问题

github.com/element-plu…

image-20220309090723972

OK,那基本锁定问题是出在了volar版本更新的问题了

然后去volar的issues看看吧,果然volar的作者**johnsoncodehk** 建议先回退版本到0.32.0

github.com/johnsoncode…

image-20220309091251785

目前我的版本是0.32.1,看来是个过渡版本

image-20220309091710205

如何版本降级?

找到对应要回退的版本tag

image-20220309114442155

1 打开 VSCode 插件市场网址 marketplace.visualstudio.com/vscode,输入你想要的插件名称

然后下载对应的版本,这里我下载的是volar 0.32.0

image-20220309120101323

2 卸载已经安装的volar

image-20220309120420110

3 把下载下来的离线安装包拷贝到 VSCode 的安装目录下的 bin 目录下,比如我的 VSCode 安装在 D:\Microsoft VS Code\,因此这里我应该拷贝到 C:\Microsoft VS Code\bin 这个目录下

image-20220309120434916

4 输入命令安装

 code --install-extension johnsoncodehk.volar-0.32.0.vsix

image-20220309123312108

这样版本降级就成功了,提示更新暂时不理,等稳定点的版本再说

image-20220309123359908

这样我的报错信息就消失了

image-20220309123520231