TypeScript 枚举和接口在快速信息/工具提示中没有定义,

avwztpqn  于 3个月前  发布在  TypeScript
关注(0)|答案(5)|浏览(34)

这个问题可能与 this one 有关,但我的不是关于版本3.0的,而且不仅仅是关于导入。

搜索词

枚举、描述、定义、弹出窗口、工具提示、VS Code、界面、建议

建议

在枚举和接口上悬停时,应显示它们的定义,即:我有一个枚举(或接口):

enum enumName {
    ONE = 1;
    TWO = 2;
    THREE = 3;
}

如果我悬停在这个枚举上,无论我在哪里使用它(无论是将其导入到另一个文件还是在声明的地方本地使用),我都希望看到这个枚举是关于什么的(本质上是什么属性)。
我现在在悬停在枚举或接口上时看到的是:

作为解决方法,我目前需要在枚举声明上方添加这种类型的JSDoc注解。

/** Props:
*    @param ONE 1;
*    @param TWO 2;
*    @param THREE 3;
*/

这将生成:

用例

这个功能可以节省时间和精力。
当前方法的缺点是要么需要添加 ${2+numberOfEnumProperties} lines 的注解,要么去文件中找到声明枚举的地方,然后熟悉它的属性。

示例

检查清单

我不太有经验来回答下面的问题。

  • 这不会对现有的TypeScript / JavaScript代码造成破坏性的变化
  • 这不会改变现有JavaScript代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的JS的情况下实现
  • 这不是一个运行时特性(例如新的表达式级语法)
0s0u357o

0s0u357o1#

此外,如果我有一个接口,它扩展了另一个接口:

interface One {
    one: number;
}

interface Two extends One {
    two: string;
}

当我在某个地方使用 interface Two 并悬停在它上面时,我会得到与我在初始帖子中的第二个截图中相同的枯燥描述,即没有指定属性的描述,甚至不显示它扩展了哪些接口。

zdwk9cvp

zdwk9cvp2#

我同意。悬停在一个类型名称上以获得带有相同文本的弹出窗口相当无用。我们可以做得更好。

iovurdzv

iovurdzv3#

我发现接口和枚举的类型信息基本上是无用的,这真的很烦人。它还会影响所有IDE在显示定义时的情况。请看这个JetBrains IDE的例子:https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-44531

fykwrbwg

fykwrbwg4#

请有人指出代码库中这些定义是在哪里创建的,尤其是类型和接口之间的区别。然后也许社区中的某人可以查看如何采取行动。

wmomyfyw

wmomyfyw5#

我解决这类问题的方法是启用TSServer日志记录,执行你感兴趣的操作,然后查看发出了哪些请求:

{"seq":270,"type":"request","command":"quickinfo","arguments":{"file":"/Users/ortatherox/dev/typescript/new-website/packages/sandbox/src/typeAcquisition.ts","line":15,"offset":15}}

因此,这个请求是一个 quickinfo - 在代码库中进行搜索找到的 getQuickInfoAtPosition - 这是代码开始的地方 - 我打赌,你要找的代码在 SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind

相关问题