你好,我不太明白你的问题。你能再解释一下吗?
2ul0zpep1#
实际上,这可能是错误的——工作台似乎有点小问题。这个方法只在我导入了引用的类型时有效。然而,如果禁用了编译器标志“不允许未使用的局部变量”,那么如果我在文件的其他地方没有使用该类型,就会产生警告。
解决这个问题的一个方法是将链接的类型标记为“已使用”。C#在他们的xml文档中就是这样做的。或者只是链接到所有导出的全局变量,但如果它们共享名称,这可能会导致指向错误的类型。
这是我在一个实际程序中看到它的链接——当生成typedoc时,它可以很好地解析https://github.com/connor4312/cosmonaut/blob/18a954f6184173fff999a4616b7cf8554addd966/src/baseModel.ts#L45
ibrsph3r2#
好的,我同意这个应该可以工作,并且应该浏览整个已知符号列表(这是我作为JS用户所期望的,我认为这与网页版本的工作方式相匹配)。深入研究后发现,#41877从未对gotoDefinition服务进行过更改,这意味着它只能与当前范围内的标识符一起工作,并且不会搜索整个项目以查找标识符。一个失败的四斜杠测试:
///<reference path="fourslash.ts" /> // @Filename: foo.ts //// export interface [|/*def1*/Foo|] { //// foo: string //// } // @Filename: importee.ts //// /** {@link /*otherFile*/[|Foo|] } not explicitly linked */ //// const f = "" goTo.marker("otherFile"); verify.goToDefinitionIs("def1");
6ss1mwsb3#
关于是否将范围扩大到所有标识符的讨论,稍后我会等待@sandersn回来再讨论这个问题。否则,如果未使用的导入在@link中,我们将其视为已使用。
@link
pbgvytdp4#
在与@orta讨论后,我们改变了观点。现在我认为将范围扩大到所有标识符是正确的选择,而他不是。然而:很难确定精确的语义,也很难高效地实现,所以我认为现在不值得这样做。应该起作用的是导入引用:import('./b').Model。我不认为@link甚至能正确解析这个引用。编辑:@mjbvz比我先想到:#43950
import('./b').Model
4si2a6ki5#
我倾向于通过将 @link 中引用的导入项视为已使用的变量来解决这个问题,这样 @typescript-eslint/no-unused-vars 就不会再抱怨了。这样一来,开发者可以像正常导入变量一样导入链接所需的变量,因此他们只需要了解一种导入变量的机制。此外,为了使 @link 和普通引用之间的体验更加一致:
@typescript-eslint/no-unused-vars
/** {@link Foo} */
那么 Foo 有快速修复功能来导入 Foo。
Foo
Foo.
5条答案
按热度按时间2ul0zpep1#
实际上,这可能是错误的——工作台似乎有点小问题。这个方法只在我导入了引用的类型时有效。然而,如果禁用了编译器标志“不允许未使用的局部变量”,那么如果我在文件的其他地方没有使用该类型,就会产生警告。
解决这个问题的一个方法是将链接的类型标记为“已使用”。C#在他们的xml文档中就是这样做的。或者只是链接到所有导出的全局变量,但如果它们共享名称,这可能会导致指向错误的类型。
这是我在一个实际程序中看到它的链接——当生成typedoc时,它可以很好地解析https://github.com/connor4312/cosmonaut/blob/18a954f6184173fff999a4616b7cf8554addd966/src/baseModel.ts#L45
ibrsph3r2#
好的,我同意这个应该可以工作,并且应该浏览整个已知符号列表(这是我作为JS用户所期望的,我认为这与网页版本的工作方式相匹配)。
深入研究后发现,#41877从未对gotoDefinition服务进行过更改,这意味着它只能与当前范围内的标识符一起工作,并且不会搜索整个项目以查找标识符。
一个失败的四斜杠测试:
6ss1mwsb3#
关于是否将范围扩大到所有标识符的讨论,稍后我会等待@sandersn回来再讨论这个问题。
否则,如果未使用的导入在
@link
中,我们将其视为已使用。pbgvytdp4#
在与@orta讨论后,我们改变了观点。现在我认为将范围扩大到所有标识符是正确的选择,而他不是。然而:很难确定精确的语义,也很难高效地实现,所以我认为现在不值得这样做。
应该起作用的是导入引用:
import('./b').Model
。我不认为@link
甚至能正确解析这个引用。编辑:@mjbvz比我先想到:#43950
4si2a6ki5#
我倾向于通过将
@link
中引用的导入项视为已使用的变量来解决这个问题,这样@typescript-eslint/no-unused-vars
就不会再抱怨了。这样一来,开发者可以像正常导入变量一样导入链接所需的变量,因此他们只需要了解一种导入变量的机制。此外,为了使
@link
和普通引用之间的体验更加一致:@link
引用报告错误@link
引用的变量。例如,如果我有那么
Foo
有快速修复功能来导入Foo
。Foo.
之后的光标位置