TypeScript 默认类型参数值总是在悬停时显示 ```markdown 默认类型参数值总是在悬停时显示 ```

kokeuurv  于 4个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(48)

🔎 搜索词

默认参数悬停

🕗 版本与回归信息

  • 这是我尝试的每个版本中的行为

⏯ Playground链接

https://tsplay.dev/mpkKgN

💻 代码

export abstract class Kind<
    hkt extends (...args: any[]) => unknown = (...args: any[]) => unknown
> {
    declare readonly args: unknown
    abstract readonly hkt: hkt
}

// Hover: Kind<(...args: any[]) => unknown>
type SomeHkt = Kind

🙁 实际行为

Kind的默认参数在悬停时显示。

🙂 预期行为

可设置的泛型参数如果在示例化时未设置且/或明确设置为默认值,则不应打印。这也适用于 .d.ts,尽管这种情况较少见。

关于此问题的其他信息

这显然不是一个错误,而是一个请求,有助于减少许多类型的视觉杂乱。具有多个非平凡默认值的参数的类型相对常见,尤其是当这些默认值递归地展开时。
我还想起来,当与自动修复功能结合使用时,这也可以使写入用户文件的类型更加可用。在使用 --isolatedDeclarations 时,自动修复功能的最大问题之一是它们经常引入具有长默认值的多个泛型参数的类型,最终编写出一些巨大的类型而不是仅仅一个标识符。

osh3o9ms

osh3o9ms1#

我认为这很棘手,因为并非总是很明显地选择了默认值。例如,如果你有类似

$x_{1a0b1} x$

的表达式,那么在这种情况下,我们需要分析表达式的含义来确定是否存在歧义。

hgtggwj0

hgtggwj02#

这仅适用于类型参数具有显式默认值且未被覆盖的情况。我认为这对于具有推断参数的函数可能并不特别有用,但对于接受可选类型参数的类型/类/接口更有用。

相关问题