VSCode 仅在导入符号时将 JSDoc link 渲染到另一个文件
VSCode only renders JSDoc link to another file when symbol is imported
我正在尝试使用 JSDoc @link
注释来引用另一个文件上的 class,但 VSCode 无法识别它并且工具提示呈现为纯文本.
我找到了一个解决方法,即将符号导入到我的文件中。但是,我不想导入一些东西,以便它可以出现在文档中。
如何让它发挥作用?
TDLR
同一文件中的链接工作正常。问题仅在于跨文件链接,但 VSCode's docs for the @link
directive.
中没有对该主题的相关参考
我是 运行:
- VSCode 1.58.2
- 打字稿 4.3.5
这不正是您期望的工作方式吗?如果您将 link 添加到符号,VS Code(或任何 IDE,真的)需要知道您的意思是什么符号。
如果他们只需要猜测符号,他们不仅需要检查 所有 可能的类型文件,还会有 类 因为例如例如,您的 20 个依赖项(甚至单个依赖项中的 20 个文件)都会创建一个 export interface Options
。
您 可能 能够使用 import('module').Export
作为类型。
或者,您可以使用 type-only import,在 TypeScript 3.5 中添加:
import type { SomeType } from 'some-module';
// Works fine, since we're only using the type
type UsingTheType = Partial<SomeType>;
// Errors, because we didn't import the actual value
// (assuming it should be a value anyway, e.g. a class)
const someType = new SomeType();
如果您查看转译后的代码,您会注意到这实际上不会导致 import
/require
。仅类型实际上不会在运行时导入,它只会在编译时导入类型。
如果您使用不使用值的常规导入,TypeScript 应该会做同样的事情,但这更明确。
这个问题的公认答案是正确的。您始终可以使用 type-only 导入来解决此问题。 但是,有时导入的类型不会在文件的其他任何地方使用,因此,假设您使用的是 ESLint,您可能会得到 @typescript-eslint/no-unused-vars
error/warning .我目前正在禁用此类导入的规则,这显然远非理想。我认为理想的修复方法是允许以某种方式在 TSDoc 中导入它。
我正在尝试使用 JSDoc @link
注释来引用另一个文件上的 class,但 VSCode 无法识别它并且工具提示呈现为纯文本.
我找到了一个解决方法,即将符号导入到我的文件中。但是,我不想导入一些东西,以便它可以出现在文档中。
如何让它发挥作用?
TDLR
同一文件中的链接工作正常。问题仅在于跨文件链接,但 VSCode's docs for the @link
directive.
我是 运行:
- VSCode 1.58.2
- 打字稿 4.3.5
这不正是您期望的工作方式吗?如果您将 link 添加到符号,VS Code(或任何 IDE,真的)需要知道您的意思是什么符号。
如果他们只需要猜测符号,他们不仅需要检查 所有 可能的类型文件,还会有 类 因为例如例如,您的 20 个依赖项(甚至单个依赖项中的 20 个文件)都会创建一个 export interface Options
。
您 可能 能够使用 import('module').Export
作为类型。
或者,您可以使用 type-only import,在 TypeScript 3.5 中添加:
import type { SomeType } from 'some-module';
// Works fine, since we're only using the type
type UsingTheType = Partial<SomeType>;
// Errors, because we didn't import the actual value
// (assuming it should be a value anyway, e.g. a class)
const someType = new SomeType();
如果您查看转译后的代码,您会注意到这实际上不会导致 import
/require
。仅类型实际上不会在运行时导入,它只会在编译时导入类型。
如果您使用不使用值的常规导入,TypeScript 应该会做同样的事情,但这更明确。
这个问题的公认答案是正确的。您始终可以使用 type-only 导入来解决此问题。 但是,有时导入的类型不会在文件的其他任何地方使用,因此,假设您使用的是 ESLint,您可能会得到 @typescript-eslint/no-unused-vars
error/warning .我目前正在禁用此类导入的规则,这显然远非理想。我认为理想的修复方法是允许以某种方式在 TSDoc 中导入它。