TypeScript jsDoc intellisense支持另一个文件中的@typedef

bz4sfanl  于 2022-10-29  发布在  TypeScript
关注(0)|答案(2)|浏览(145)

问题类型:功能请求
Intellisense在其他文件中使用@typedef标记,但仅当该文件在当前窗口中打开时才使用。请允许在当前工作目录中使用任何typedef标记,即使包含typedef的文件未打开。
下面是我的意思。我用类型注解了一个变量。这个变量直接用module. exports导出。

我的typedef在单独的文件中。
Configuration.js

/**
 * @typedef {Object} ConfigurationInputDirectories
 * @property {string} modules
 * @property {string} layoutModules
 * @property {string} standaloneScripts
 * @property {string} standaloneStyles
 * @property {string} libraryScripts
 * @property {string} libraryStyles
 * @property {string} markupTemplates
 */

/**
 * @typedef {Object} ConfigurationOutputDirectories
 * @property {string} pageScripts
 * @property {string} vendorScripts
 * @property {string} standaloneScripts
 * @property {string} pageStyles
 * @property {string} vendorStyles
 * @property {string} standaloneStyles
 * @property {string} markupFiles
 */

/**
 * @typedef {Object} ConfigurationVendor
 * @property {string} standardPath
 * @property {string} minPath
 */

/**
 * @typedef {Object} ConfigurationModule
 * @property {string} layoutModule
 * @property {string} markupTemplate
 * @property {string[]} includeStandaloneScripts
 * @property {string[]} includeStandaloneStyles
 * @property {string[]} includeVendorScripts
 * @property {string[]} includeVendorStyles
 * @property {string[]} excludeStandaloneScripts
 * @property {string[]} excludeStandaloneStyles
 * @property {string[]} excludeVendorScripts
 * @property {string[]} excludeVendorStyles
 */

/**
 * @typedef {Object} ConfigurationLayoutModule
 * @property {string} layoutModule
 * @property {string} markupTemplate
 * @property {string[]} includeStandaloneScripts
 * @property {string[]} includeStandaloneStyles
 * @property {string[]} includeVendorScripts
 * @property {string[]} includeVendorStyles
 * @property {string[]} excludeStandaloneScripts
 * @property {string[]} excludeStandaloneStyles
 * @property {string[]} excludeVendorScripts
 * @property {string[]} excludeVendorStyles
 */

/**
 * Represents configuration object for build process.
 * @typedef {Object} Configuration
 * @property {ConfigurationInputDirectories} inputDirectories
 * @property {ConfigurationOutputDirectories} outputDirectories
 * @property {Object.<string,ConfigurationVendor} vendorScripts
 * @property {Object.<string,ConfigurationVendor>} vendorStyles
 * @property {Object.<string,ConfigurationModule>} modules
 * @property {Object.<string,ConfigurationLayoutModule>} layoutModules
 * @property {string} defaultMarkupTemplate
 * @property {string} contentPlaceHolder
 * @property {string} nameDirectorySeperator
 * @property {string[]} validLibraryEntryFileNames
 * @property {string} moduleFileName
 * @property {string} rootModuleFileName
 * @property {string} systemjsPath
 * @property {string} systemjsNamedRegistersPath
 */

当打开包含类型定义的此文件时,intellisense/语言服务/或您调用的任何服务都会识别此变量的类型,并且intellisense会在使用此配置变量时显示成员。但当关闭文件时,其类型会变为any。即使关闭包含标记的文件,也可以从typedef标记中查看类型信息。

VS代码版本:代码1.33.0(2019年4月4日15:14:28.026Z,日期:2019年4月4日)
操作系统版本:Windows NT 10.0.17134

ajsxfq5m

ajsxfq5m1#

如果启用了"javascript.implicitProjectConfig.checkJs": true,这也会影响到一些东西。如果关闭了带有typedefs的文件,红色的错误会出现在我引用它们的文件中。

qkf9rpyu

qkf9rpyu2#

我也希望看到这个问题得到解决。如果有解决办法,请联系。

相关问题