升级ap-angular-fullcalendar至1.6.x后JQueryPromise等类型找不到求助
我之前升级Angular版本时也碰到过类似的类型定义报错,给你几个针对性的解决步骤,应该能搞定:
第一步:安装兼容的jQuery类型定义版本
Angular 6对@types包的版本兼容性要求比较严格,建议先卸载可能冲突的旧版本,再安装和当前jQuery匹配的类型定义:npm uninstall @types/jquery --save-dev npm install @types/jquery@^3.3 --save-dev这个版本的@types/jquery包含你报错的
JQueryPromise、JQueryEventObject、JQueryAjaxSettings所有类型。第二步:配置TypeScript编译选项
打开项目根目录的tsconfig.json,在compilerOptions里添加types字段,明确告诉TypeScript引入jQuery的类型定义:{ "compilerOptions": { // 保留其他已有配置... "types": ["jquery"], "typeRoots": ["node_modules/@types"] } }如果是测试环境报错,还要同步修改
tsconfig.spec.json做同样配置——因为测试环境的TypeScript配置是独立的。第三步:确保jQuery全局可用
打开angular.json,在build和test的scripts数组里添加jQuery的脚本路径:"scripts": [ "node_modules/jquery/dist/jquery.min.js" ]这样能保证整个应用(包括测试)都能访问到jQuery全局对象,避免类型查找失败。
第四步:手动导入(针对个别报错文件)
如果还是有个别组件或测试文件报错,可以在文件顶部手动导入jQuery:import * as $ from 'jquery';这样TypeScript会明确关联该文件的jQuery类型定义。
另外要注意,ap-angular-fullcalendar 1.6.x本身依赖jQuery和FullCalendar,确保这些基础依赖的版本也和Angular 6兼容,避免因依赖版本不匹配导致的间接类型问题。
内容的提问来源于stack exchange,提问作者Jason

