如何在非TypeScript项目中通过d.ts实现JavaScript智能提示
问题解决指南
一、无需npm/bower解决jQuery引用找不到的问题
你当前用的/// <reference types="jquery" />是依赖npm安装的@types/jquery类型包,既然不想用包管理工具,直接换成本地文件引用即可:
- 找到
%LOCALAPPDATA%\Microsoft\TypeScript里的jquery类型文件路径(比如C:\Users\你的用户名\AppData\Local\Microsoft\TypeScript\jquery\3.5.11\jquery.d.ts) - 修改
KatApp.d.ts里的引用语句为绝对路径引用:/// <reference path="C:/Users/你的用户名/AppData/Local/Microsoft/TypeScript/jquery/3.5.11/jquery.d.ts" /> - 或者更稳妥的方式:把该
jquery.d.ts复制到Web Forms项目的某个固定目录(比如Scripts/Typings),然后用相对路径引用:/// <reference path="./Scripts/Typings/jquery.d.ts" />
二、智能提示仅打开d.ts时生效的问题(非预期行为)
这不是正常现象,是VS的JavaScript语言服务没自动加载你的KatApp.d.ts导致的,解决方法:
- 调整文件位置:把
KatApp.d.ts放到项目的Scripts目录或根目录下,VS默认会扫描这些目录的类型定义文件。 - 添加jsconfig.json配置:在Web Forms项目根目录创建
jsconfig.json文件,明确指定要加载的类型文件:
保存后重启VS,语言服务会自动加载该文件,不用打开也能触发智能提示。{ "compilerOptions": { "checkJs": true // 启用JavaScript类型检查,配合@type标注生效 }, "include": [ "./Scripts/**/*", // 扫描Scripts下所有文件 "./KatApp.d.ts" // 明确加载你的类型定义文件 ] }
三、原TS项目其他接口未包含的风险
如果这些接口是KatApp类的依赖项(比如方法参数、返回值用到了这些接口),那必须把它们也添加到KatApp.d.ts里,否则在使用KatApp时会出现类型缺失、智能提示不全的问题。你可以:
- 调整原TS项目的
tsconfig.json,确保declaration模式下所有依赖类型都被输出到d.ts文件中; - 手动把缺失的接口复制到
KatApp.d.ts里,放在KatApp类定义之前。
内容的提问来源于stack exchange,提问作者Terry
相关产品推荐
相关产品推荐

