vscode如何识别js模块的类型

Posted

技术标签:

【中文标题】vscode如何识别js模块的类型【英文标题】:how vscode recognize type of js module 【发布时间】:2020-05-16 20:37:35 【问题描述】:

我是 javascript 和 typescript 的新手,我使用npm install mysql 安装 mysql 模块

我发现vscode的intellisense即使在我使用javascript的时候也能自动识别类型

就这样

并且模块源文件不包含任何.ts文件,我想知道它是如何工作的。

【问题讨论】:

mysql 模块很可能已经使用JSDoc 记录了它的方法。 VSCode 已内置支持此文档。 【参考方案1】:

代码在后台下载 TS 类型。它检查 package.json 或导入来决定要获取哪些类型。 mysql的打字:

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/8f158d2d4c8459463e5e0a27cc298041483c5e22/types/mysql/index.d.ts

更多信息请点击以下链接:

https://code.visualstudio.com/docs/nodejs/working-with-javascript

【讨论】:

如果您觉得有帮助,可以将其标记为答案。【参考方案2】:

mysql 包是用纯 JS 编写的,但是它包含文档。该文档被标准化为JSDoc。 VSCode 内置支持阅读本文档并将其显示给用户。 (注意:它并不支持所有的 JSDoc 标签)

来自mysql/index.js 的示例。 (source)

/**
 * Create a new Connection instance.
 * @param object|string config Configuration or connection string for new MySQL connection
 * @return Connection A new MySQL connection
 * @public
 */
exports.createConnection = function createConnection(config) 
  var Connection       = loadClass('Connection');
  var ConnectionConfig = loadClass('ConnectionConfig');

  return new Connection(config: new ConnectionConfig(config));
;

@param 标签指定config 可以接收的类型。 object|string 表示可以是对象也可以是字符串。

【讨论】:

但是当我点击这个函数的'''go to definition'''选项时,它会跳转到'C:/users/xxx/AppData/Local/Microsoft/TypeScript/3.7/中的一个文件夹node_modules/@types//mysql/index.d.ts' 可能 Dauren Akilbekov 的 answer 也适用。

以上是关于vscode如何识别js模块的类型的主要内容,如果未能解决你的问题,请参考以下文章

VsCode 无法识别模块(我使用的是 python 3.10)

JSX 在纯 JavaScript 文件中工作,如何?

如何识别 s-s-rS 中的报表项

如何在 VSCode 上安装新的 python 模块?

将vscode打造成无敌的IDE(11) vscode增加文件后缀类型的支持,例如cmake支持识别cmake.in

如何强制 VSCode 使用本地安装的 TypeScript