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

TypeScript中使用$(document)报错,是否已弃用或类型定义有误?

问题分析与解决方案

首先明确说:$(document)并没有被弃用,jQuery 3.x系列完全支持这个写法,ready()方法也依然有效(虽然现在更推荐监听DOMContentLoaded事件或者把脚本放在页面底部,但这个经典写法本身没问题)。你遇到的错误大概率是TypeScript版本与@types/jquery版本不兼容导致的类型定义匹配问题。

你的环境是TypeScript 3.1(2018年发布的旧版本),而@types/jquery 3.3.29是后续更新的类型包,它的类型签名可能已经超出了TS 3.1的类型系统支持范围,导致参数不匹配的报错。

下面是几个可行的解决办法:

  • 降级@types/jquery到兼容TS 3.1的版本
    打开项目的package.json,把@types/jquery的版本修改为和TS 3.1兼容的旧版本,比如@types/jquery@3.3.10(这个版本的类型定义适配TS 2.8+,和3.1完全兼容)。然后执行npm install或yarn install重新安装依赖。

  • 使用类型断言绕过类型检查
    如果不想修改依赖版本,可以在代码里手动指定类型,强制TS识别$(document)的正确类型:

    ($(document) as JQuery<Document>).ready(() => { 
      console.log("Hello World!"); 
    });
    
  • 检查类型定义的引入是否正确
    确保你的tsconfig.json里的types数组包含jquery,或者在TypeScript文件顶部添加类型引用声明:

    /// <reference types="jquery" />
    

另外补充一点:如果项目允许的话,升级TypeScript到更高版本(比如4.x或5.x)会更稳妥——新版本TS对类型系统的支持更完善,也能更好地适配最新的@types/jquery包,从根源上避免这类版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:38:03