Vue2项目迁移TypeScript后aws-amplify的Vue.use类型报错如何解决
问题原因
你使用的aws-amplify@1.3.3版本自带的TypeScript类型声明存在缺陷:JS运行时层面这个库确实实现了Vue插件要求的install方法,但是类型声明文件中没有对外暴露该属性,因此触发了TS的类型校验报错,不影响实际运行就是类型声明不匹配导致的。
解决方案
按实现成本从低到高可选以下任意一种:
- 快速临时修复:直接对传入
Vue.use的参数加类型断言,忽略类型校验
把main.ts里的Vue.use(AmplifyModules)改成:
该方法不需要额外修改其他配置,改完立刻生效。Vue.use(AmplifyModules as any) - 规范类型补全:新增全局类型声明让TS正确识别Amplify的插件类型
在项目src目录下新建shims-amplify.d.ts文件,写入以下内容:
保存后重启TS服务即可生效,不会破坏其他地方的类型校验。declare module 'aws-amplify' { import type { PluginObject } from 'vue' const Amplify: PluginObject<any> export default Amplify } - 依赖版本升级:如果允许修改依赖版本,可以升级到已修复该类型问题的适配Vue2的aws-amplify版本,不需要额外修改类型声明即可消除报错。
内容的提问来源于stack exchange,提问作者mmachenry
相关产品推荐
相关产品推荐

