Vue3:naive-ui组件自动引入后ts定义类型丢失解决方案
使用naive-ui按需引入时经常单页面引入过多组件,并且有时漏掉一个引入,也不回报错,排查起来很麻烦,就改成了官方的自动引入方法:

使用一段时间后发现不对劲,怎么naive最爽的ts定义怎么崩了,所有的组件类型都改成any了:
在网上找相关内容也没有类似解决方案,心情瞬间不爽了

最终自己摸索,完美解决:

解决方案
在查找定义类型时,发现有两处类型定义:
目录均为naive包下的volar定义,因为一个any定义导致全局的组件定义均覆盖成了any,删除这个定义就可以恢复,但是这个毕竟是node_modules包内的文件,删掉治标不治本,于是打算从ts配置入手。
使用自动引入后,会自动编译一个components.d.ts的定义文件,打开后发现就是组件的全局定义,就此大胆猜测,只要将ts的定义文件从naive包获取转为从这个文件获取,应该就能解决。
翻看一下当前的tsconfig.json配置文件:

很明显的看到这个定义原来是因为配置了volar.d.ts的type导致,翻看官方文档发现是为了volar支持:

这里将volar删掉,并且在include项中添加根目录的定义文件适配:
{
"compilerOptions": {
"types": ["node"]
},
"include": ["./*.d.ts"]
}
这里只写了修改的地方,“./*.d.ts”用来读取根目录下的所有.d.ts定义文件,完整示例如下:

如此引入后,ts的定义就正常了:

具体不知道是什么原因导致,发现也有人有类似的情况,已提交 issues
附上相关项目github地址:vue3-ts-admin-demo
近期在写的一个vue3+naive-ui管理端模板👍