You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在TypeScript编写的Vue组件中使用Summernote遇TS2339错误求助

解决TypeScript Vue组件中Summernote的TS2339错误

这个问题我之前在项目里也碰到过,本质是TypeScript不知道jQuery对象被Summernote扩展了summernote()方法,所以抛出了类型不存在的错误。下面给你几个靠谱的解决办法:

方法一:安装Summernote的类型声明包

TypeScript需要对应的类型定义来识别jQuery上扩展的方法,直接安装官方维护的类型包即可:

npm install @types/summernote --save-dev
# 或者使用yarn
yarn add @types/summernote --dev

安装完成后,TypeScript会自动识别这个类型定义,一般情况下错误就会消失。如果还是有问题,可以检查下你的tsconfig.json,确保compilerOptions里的types数组包含summernote(如果没有这个配置项,默认会自动扫描node_modules/@types下的包)。

方法二:手动声明jQuery的扩展接口

如果安装类型包后依然报错,或者你不想额外安装依赖,可以在组件文件顶部或者项目的全局类型声明文件(比如src/types/global.d.ts)里手动添加接口声明:

declare interface JQuery {
  // 适配初始化的调用方式
  summernote(options?: Record<string, any>): JQuery;
  // 适配调用方法的方式,比如$('#summernote').summernote('code')
  summernote(methodName: string, ...args: any[]): any;
}

这样TypeScript就会知道JQuery类型上存在summernote方法了。

额外优化建议

在Vue组件里,更推荐使用ref来获取DOM元素,而不是依赖id选择器,这样更符合Vue的组件化思想:

mounted() {
  // 使用ref替代id选择器
  $(this.$refs.mysummernote).summernote();
}

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:24:55