首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用babel保留jsdoc注释和VS代码智能感知

基础概念

Babel: 是一个广泛使用的JavaScript编译器,它允许开发者使用最新的ECMAScript标准编写代码,并将其转换为向后兼容的版本,以便在旧版浏览器和其他环境中运行。

JSDoc: 是一种用于JavaScript代码的API文档生成器,通过在代码中添加特定的注释格式,可以自动生成API文档。

VS Code智能感知: Visual Studio Code(VS Code)提供的一种功能,它可以实时分析代码并提供代码补全、参数提示、跳转到定义等智能辅助功能。

相关优势

  1. 保留JSDoc注释: 使用Babel插件可以在转换代码的同时保留JSDoc注释,这对于维护文档和代码的一致性非常重要。
  2. VS Code智能感知: 当JSDoc注释被正确保留时,VS Code可以利用这些注释来增强其智能感知功能,提供更准确的代码提示和自动补全。

类型与应用场景

  • 类型: Babel插件如babel-plugin-jsdoc-reserved-comments专门用于保留JSDoc注释。
  • 应用场景: 主要应用于需要维护大量JavaScript代码库的项目,特别是在团队协作和文档生成方面。

遇到的问题及原因

问题: 在使用Babel转换代码后,JSDoc注释丢失,导致VS Code的智能感知功能受到影响。

原因: Babel默认情况下可能不会保留注释,特别是当使用了某些优化插件时。

解决方案

步骤1: 安装必要的Babel插件

首先,你需要安装babel-plugin-jsdoc-reserved-comments插件。

代码语言:txt
复制
npm install babel-plugin-jsdoc-reserved-comments --save-dev

步骤2: 配置Babel

在你的.babelrcbabel.config.js文件中添加该插件。

代码语言:txt
复制
{
  "plugins": ["babel-plugin-jsdoc-reserved-comments"]
}

或者如果你使用的是JavaScript配置文件:

代码语言:txt
复制
module.exports = {
  plugins: ['babel-plugin-jsdoc-reserved-comments']
};

步骤3: 确保VS Code使用正确的TypeScript版本

VS Code使用内置的TypeScript版本进行智能感知。确保你的项目中有一个jsconfig.jsontsconfig.json文件,这样VS Code可以正确地索引你的JavaScript项目。

代码语言:txt
复制
{
  "compilerOptions": {
    "checkJs": true,
    "allowJs": true
  },
  "exclude": ["node_modules"]
}

步骤4: 验证配置

重新启动VS Code并打开一个JavaScript文件,尝试使用智能感知功能,查看是否能够正确显示JSDoc注释提供的信息。

示例代码

假设你有以下JavaScript文件example.js:

代码语言:txt
复制
/**
 * Adds two numbers.
 * @param {number} a - The first number.
 * @param {number} b - The second number.
 * @returns {number} The sum of the two numbers.
 */
function add(a, b) {
  return a + b;
}

使用上述配置后,Babel转换代码时会保留这段JSDoc注释,VS Code的智能感知功能也能正确识别并提供帮助。

通过这种方式,你可以确保在使用Babel进行代码转换的同时,不会丢失重要的JSDoc注释,从而保持代码的可读性和维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VScode 的 JS 智能提示弱爆了?但是我有办法!

本文针对使用IDE中智能提示功能的介绍,不涉及具体的IDE对代码分析(代码感知)的实现机制的解析,所以因为被标题吸引过来的大佬们抱歉,同时给vscode或者JetBrains写插件(拓展)的大佬们致敬。...同时粘一下大佬们的阵地:微软公开的vscode的github源码 https://github.com/microsoft/vscode 同时本文不涉及aiXcoder、Deep TabNine这类不单针对本地代码进行感知...智能提示功能很常见,是一个很方便的功能——用户在输入若干字符后会弹出提示候选词给用户,方便用户快速获得结果; 以下是百度跟谷歌的智能提示上的对比,我们可以下结论说在用户进行拼音的输入时,在感知体验上谷歌是不如百度的效果好的...02 IDE中的智能提示是啥? VScode的效果(没有加JSdoc) ? 代码是用严格模式来写的js游戏项目(如果读者们有需要,有机会会拿出来分享的)。...3、如果不能智能提示,查看一下是不是打开了省电模式 ? 04 WebStorm一些常用的功能设置 1、快速给文件、方法、字段添加注释 ? 2、鼠标放到字段名或者方法名上时显示这些注释 ?

5.9K30

为你的 JavaScript 项目添加智能提示和类型检查

前言 最近在做项目代码重构,其中有一个要求是为代码添加智能提示和类型检查。智能提示,英文为 IntelliSense,能为开发者提供代码智能补全、悬浮提示、跳转定义等功能,帮助其正确并且快速完成编码。...基于 JSDoc JSDoc 是目前最通用的 JavaScript API 文档生成器,根据其语法编写代码注释,可以十分方便地自动生成文档。...JSDoc 注释使得阅读和理解代码更加方便(代码交接时再也不用抓狂了,当然前提是注释写得好),也保障了开发时的体验并且降低了很多运行时才能发现的数据类型方面的 bug。...不严格地来说,ts 类型声明文件就像用 TypeScript 语法将 JSDoc 的注释重写了一遍并提取到了单独的文件中。...VSCode 更是将二者作了融合,当你二者混用的时候,可以直接在 JSDoc 的注释中直接使用 ts 类型声明文件中定义的 interface 和 class 等。

3.6K20
  • 你了解 Typescript 吗

    JavaScript版本 强大的智能感知 Typescript特性 可选静态类型 类型可被添加到变量,函数,属性等。...代码自动完成,代码智能感知 ts与js TS是一个应用程序级的JavaScript开发语言。 TS是JavaScript的超集,可以编译成纯JavaScript。...} 接手代码注释不多,相关变量命名不规范,变量类型、接口类型等均难以debug。 重构代码、重命名符号需要改动太多相关文件。...并且还支持目前流行的编辑器,比如VSCode, Atom和Sublime Text。 此外,TypeScript还支持解析JSDoc。 为什么使用Typescript 1....在一个静态类型的编程语言中,使用接口来定义子系统之间的界限。 4. 类型的支持,使代码更易阅读和理解。 我们不需要深入了解代码的实现,也不需要去阅读文档,就可以更更好地理解代码。 5.

    5.6K10

    不需要TypeScript,JS+JSDoc够了?大佬说我想多了

    它提供了许多有价值的功能,如类型安全、代码智能感知和重构支持等,这些功能对于大型项目和团队协作非常有益。...其次,这两者并不冲突,我个人在写 TypeScript 的时候也会写对应的 JSDoc,因为 TypeScript 的类型没法有更多的注释和描述。...李振:理论上也是可行的,但与 TypeScript 相比,它仍然存在一些限制: 静态类型检查的完整性:JSDoc 注释是基于注释的方式,而不是直接嵌入到语言中,因此它的类型检查可能不如 TypeScript...工具支持的差异:尽管一些工具和编辑器可以利用 JSDoc 注释进行类型检查,但与 TypeScript 相比,它们的功能和智能感知可能有所限制。...而使用 JavaScript + JSDoc 可能需要更多的手动工作来编写和维护类型注释。

    52810

    如何优雅地编写一个高逼格的JS插件?

    ; 根目录下创建 rollup.config.js import babel from 'rollup-plugin-babel' // babel:将最终代码编译成 es5,我们的开发代码可以不用处理兼容性...return xxxxxxxx; })); 可以看出导出的文件就是我们前面一直使用的函数自执行开发方式,其中加了各种兼容判断代码将在哪个环境下导入。...所以这里我们使用 JSDoc 来创建 API文档,它使用简单,只需要在代码中编写规范的注释,即能根据注释自动生成文档,一举多得,十分优雅!...map.has(x[key]) && map.set(x[key], true)) } export default ArrayDelSome 本例只演示最基础的用法,JSDoc有许多类型注释大家可以自行搜索学习下...,不过本例最基本的这几个注释依旧是够用的。

    1.1K10

    JSDoc ,一个可替代 TypeScript 的方案?

    JSDoc是什么? JSDoc是一个用于JavaScript的文档系统。它通过使用包含JSDoc语法的注释来工作。...JSDoc语法具有多种用途,包括用类型注释值,为函数指定参数和返回类型,为函数提供文档和使用信息,以及类型错误等。...JSDoc VS TypeScript JSDoc和TypeScript都解决了编写和维护纯JavaScript代码的问题。然而,它们采用了不同的方法,各有利弊。...JSDoc相对于TypeScript的优势: 灵活性和兼容性:JSDoc只是JavaScript注释,这意味着它可以添加到任何JavaScript代码库中,而不受语言版本的限制,并且不像TypeScript...代码注释:JSDoc不仅可以用于类型检查,还可以用于添加更多的文档,描述函数的工作原理,并生成文档网站,从而提供价值以增强代码的可维护性和理解性。

    83110

    Webpack组件库打包超详细指南

    相比webpack.prod.js,我们把entry配置为多个入口,遍历components.json来填充组件的名称和路径信息。output只需要指定一个,用占位符确保输出文件位组件的名称。...babel-plugin-import 我们可以用babel-plugin-import插件,对路径做一个转换。...安装插件 npm install babel-plugin-import --save-dev 在babel.config.js添加配置 //babel.config.js plugins: [["import...文档生成 jsdoc 这里选择用jsdoc来自动生成文档(后续发现,这里直接用jsdoc生成的文档比较不好看,示例不能清楚说明用法,缺少图片和GIF演示,jsdoc做为及时更新的API文档是够用的,但为了让库的用户更方便入手...为了vue组件能更好得用注释生成文档,我们还用了jsdoc-vuejs插件。 配置文件,看doc.conf.json。

    3.2K11

    TS in JS 实践指北

    应用:使用 .d.ts 声明文件拓展 type 能力 用声明文件增加 type 能力是无感知的,使用者并不需要关注声明文件的内容,非常优雅。...团队里的公共组件: 前端团队内部会有很多自己的公共方法,我们可以为内部维护的一些公共方法添加声明文件,让其他人使用的时候能够享受智能提示的福利,降低代码出错的可能性。...对使用频率高的对象加上 JSDoc type: 如果注释太多,可能会影响阅读体验,而且你也不可能一次性把所有代码都改成优雅的 JSDoc。...改用 JSDoc 去注释代码: 我们经常会习惯性使用//去注释代码,但是如果还需要 IDE 提示的话,我们可以改为 JSDoc 的注释风格。...怎么去应用 1.对公共组件和全局变量编写声明文件2.对自定义的函数编写 JSDoc 注释,并优雅的完善它3.对作用域不清晰的的变量、对象等使用 JSDoc 的@type,去指定它的类型 注意事项 1.不要瞎用

    4.5K20

    20个超实用的VS Code扩展(2024年版)

    在更改这些文本时,VS Code 不识别原有文本的大小写,只按照新输入的文本改写,但这个扩展可以让修改后的文本保留原有文本的大小写,非常实用。...Document This 会为 JavaScript 或 TypeScript 函数生成 JSDoc 注释。你要做的只是调用一下快捷键,或在函数上方键入 /** 就可以自动生成注释,真是懒人神器。...这样,你就可以保持良好的代码注释习惯,还能学习怎样编写优秀的 JSDoc 注释。 话说刚开始看到这个扩展声称的免这免那的广告,学研君是不信的,天上的馅饼就这么砸我脑袋上了?...ChatGPT 这个扩展可以让你直接在 VS Code 中向 GPT 提问、生成代码、解释代码、翻译英文等等。如果再结合前面提到的 Copilot,可以大大提高你编写代码的效率和质量。...如果你只使用 Python,或根本不需要编写 JavaScript 代码,那你可以忽略这个扩展了,因为 Quokka 是用来直接在 VS Code 中代码编辑区显示 JavaScript 和 TypeScript

    50710

    TypeScript 渐进迁移指南

    大体上有两种方式: Jsdoc typedef import 假设同一文件夹下有 user.d.ts,可以在 user.js 文件中加入以下注释: /** * @typedef {import('....自动生成 d.ts 如果项目的 JavaScript 代码中已经有大量 jsDoc 注释,那么你有福了,只需以下一行命令就能自动生成类型声明文件: npx typescript src/**/*.js...babel 配置(可选) 如果项目使用 babel,那么需要在 babelrc 里加上: { "exclude": ["**/*.d.ts"] } 否则 *.d.ts 文件会被编译为 *.d.js...// @ts-ignore 如果只想忽略某行而不是整个文件的话,可以使用 // @ts-ignore。加上这个注释后,类型检查会忽略下一行。 使用这两个标记可以让你慢慢修正类型检查错误。.../,那么在安装相应的类型定义文件时需要移除 @ 和 /,并在组织名后加上 __,例如 @babel/core 改为 babel__core。

    1.9K20

    不是Typescript用不起,而是JSDoc更有性价比?

    是很好的选择;静态类型检查的好处,主要包括: 类型安全 代码智能感知 重构支持 而 TS 带来的主要问题则有: 某些库的核心代码量很小,但类型体操带来了数倍的学习、开发和维护成本 TypeScript...的类型声明定义成 TS 风格,更是支持了在 JSDoc 注释的类型声明中动态引入并解析 TS 类型的能力。...JSDoc 和 TS 能力的打通,意味着前者书写方式的简化和现代化,成为了通往 TS 的便捷桥梁;也让后者有机会零成本就能下沉到业内大部分既有的纯 JS 项目中,这路是裤衩一下子就走宽了。 3....VSCode 中缺乏智能感知和提示 对于以上问题,比较理想的解决方法是前端团队兼顾 Node.js 中间层 BFF 的开发,这样无论是组织还是技术都能最大程度通用。...在通常的情况下,ProtoBuf(Protocol Buffers)的设计思想是先定义 .proto 文件,然后使用编译器生成对应的代码(例如 Java 类和 d.ts 类型定义)。

    55510

    规范JavaScript注释

    return 3 + 2; // ->5 } //(双斜线)与代码之间保留一个空格,并且//(双斜线)与注释文字之间保留一个空格。...普通多行注释 示例 /* * 代码执行到这里后会调用setTitle()函数 * setTitle():设置title的值 */ setTitle(); 若开始/*和结束*/都在一行,推荐采用单行注释。...若至少三行注释时,第一行为/*,最后行为*/,其他行以*开始,并且注释文字与*保留一个空格。 函数多行注释 函数(方法)注释也是多行注释的一种,但是包含了特殊的注释要求,参照JSDoc。...默认情况先一个function就是一个类,ES6中使用Class来表示一个类 我们项目中使用class.js来实现类,在我们项目中使用类注释时需要在@class后边增加类名,不然jsdoc无法自动识别类名...注释规范 jsdoc 小康的jsdoc

    13.2K53

    使用JSDoc提高代码的可读性

    使用JSDoc提高代码的可读性 工作了四年多,基本上都在围绕着 JavaScript 做事情。...作用 本人使用的是 vs code 编辑器,内置了对 jsdoc 的各种支持,同时还会根据部分常量,语法来推测出对应的类型 可以很方便的在编辑器中看到效果,所以下面所有示例都是基于 vscode 来做的...对比上下两段代码,代码上并没有什么区别,也许有人会嗤之以鼻,认为代码已经足够清晰,并不需要额外的添加注释来说明。...基础用法 如上文所说的,JSDoc 是写在注释中的一些特定格式内容。...JSDoc 能够在一定程度上降低维护成本,尤其是使用 vscode 以后,要手动编写的注释实际上是没有多少的。

    1.4K20

    各种关闭eslint方法总结

    ,如果你使用vs-code我觉得应该可以避免出错 "plugin:vue/essential", "@vue/standard" ], "rules":...此项是用来指定eslint解析器的,解析器必须符合规则,babel-eslint解析器是对babel解析器的包装使其与ESLint解析 } }, 或者vue.config.js中将以下三项设置为...) "error"或者2 //把规则作为一个错误(退出代码触发时为1) 3、eslint 规则配置参数 "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor..."no-useless-call": 2,//禁止不必要的call和apply "no-void": 2,//禁用void操作符 "no-var": 0,//禁用var,用let和const代替 "no-warning-comments..."strict": 2,//使用严格模式 "use-isnan": 2,//禁止比较时使用NaN,只能用isNaN() "valid-jsdoc": 0,//jsdoc规则 "valid-typeof

    17.2K21

    JSDoc 真能取代 TypeScript?

    我们总得先了解下 JSDoc: 可能大家认为的 JSDoc 是这个东西: 在代码的注释上加上类型的标识,然后通过 jsdoc 命令行工具,就可以直接生成文档。...比如这样的文档: 确实,这个是 JSDoc 最初的含义。 但我们说的 JSDoc 并不是这个,而是 TS 基于 JSDoc 语法实现的,在注释里给代码添加类型的语法。...然后我们开启 dts: 再编译: npx tsc 可以看到同样能产出 d.ts 类型声明文件: 而这时候产物的 JS 代码和源码差别不大: 因为本来 JSDoc 就是在注释里的,类型检查也好、生成...这就是 JSDoc 最大的好处:无侵入的给 JS 加上类型,拥有和 ts 一样的类型检查、类型提示、生成 dts 等功能,但却不需要编译,因为 JS 代码可以直接跑。...而且这样也能利用 ts 的类型提示和检查的能力。 所以很多人就说 svelte 抛弃了 ts。 这叫抛弃么? 并不是,JSDoc 只是另一种使用 ts 的方式而已。

    42430
    领券