JSDoc:如何让 IntelliSense/TypeScript 从其他文件中了解 类?
JSDoc: How do I let IntelliSense/TypeScript know about classes from other files?
我正在处理一个相对较大的项目,我想将 JSDoc 添加到我的 classes 和文件中以使其更容易开发。我的“配置”class/object 有一个 getter 函数,returns 它是“SQLRegistry”对象的实例,稍后在链中设置。
//configuration.js
/**
* @returns {SQLRegistry} registry
*/
getRegistry() {
return this._registry;
}
//sqlRegistry.js
const Configuration = require('./configuration');
class SQLRegistry {
//other code
}
不幸的是,在带有 IntelliSense/ESLint 的 VS Code 中,它提供了一个错误,指出它找不到 class 'SQLRegistry'。在任何其他情况下,我只会将 sqlRegistry.js 导入 configuration.js,但在这种情况下我不能(因为 sqlRegistry 依赖于 configuration.js,正如您在上面看到的)。
是否可以在文件顶部放置某种 JSDoc 注释,告诉它读取 sqlRegistry.js,以便它知道 SQLRegistry class?例如,类似于:
/**
* @include {@link ./sqlRegistry.js}
*/
你假设的@include {@link ./sqlRegistry.js}
原则上非常接近。
根据 TypeScript 对 JSDoc 语法的解释,实际的写法是
/**
* @returns {import('./sqlRegistry.js')} registry
*/
getRegistry() {
return this._registry;
}
请注意,实际上是 TypeScript 为 VS Code 的主要 JavaScript 功能(如类型推断)提供支持,而不是 ESLint
此语法,import('module-specifier')
在类型位置,被称为 import types,不要与 Type only imports 混淆,并在 TypeScript 中引入2.9.
这不是 JSDoc 的特定功能,而是来自 TypeScript。
TypeScript 语言服务识别 JSDoc 注释位置中需要类型的语法。注意官方TypeScript Handbook states that
You can also import declarations from other files using import types. This syntax is TypeScript-specific and differs from the JSDoc standard:
我正在处理一个相对较大的项目,我想将 JSDoc 添加到我的 classes 和文件中以使其更容易开发。我的“配置”class/object 有一个 getter 函数,returns 它是“SQLRegistry”对象的实例,稍后在链中设置。
//configuration.js
/**
* @returns {SQLRegistry} registry
*/
getRegistry() {
return this._registry;
}
//sqlRegistry.js
const Configuration = require('./configuration');
class SQLRegistry {
//other code
}
不幸的是,在带有 IntelliSense/ESLint 的 VS Code 中,它提供了一个错误,指出它找不到 class 'SQLRegistry'。在任何其他情况下,我只会将 sqlRegistry.js 导入 configuration.js,但在这种情况下我不能(因为 sqlRegistry 依赖于 configuration.js,正如您在上面看到的)。
是否可以在文件顶部放置某种 JSDoc 注释,告诉它读取 sqlRegistry.js,以便它知道 SQLRegistry class?例如,类似于:
/**
* @include {@link ./sqlRegistry.js}
*/
你假设的@include {@link ./sqlRegistry.js}
原则上非常接近。
根据 TypeScript 对 JSDoc 语法的解释,实际的写法是
/**
* @returns {import('./sqlRegistry.js')} registry
*/
getRegistry() {
return this._registry;
}
请注意,实际上是 TypeScript 为 VS Code 的主要 JavaScript 功能(如类型推断)提供支持,而不是 ESLint
此语法,import('module-specifier')
在类型位置,被称为 import types,不要与 Type only imports 混淆,并在 TypeScript 中引入2.9.
这不是 JSDoc 的特定功能,而是来自 TypeScript。
TypeScript 语言服务识别 JSDoc 注释位置中需要类型的语法。注意官方TypeScript Handbook states that
You can also import declarations from other files using import types. This syntax is TypeScript-specific and differs from the JSDoc standard: