🔎 搜索词
默认参数悬停
🕗 版本与回归信息
- 这是我尝试的每个版本中的行为
⏯ Playground链接
💻 代码
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
时,自动修复功能的最大问题之一是它们经常引入具有长默认值的多个泛型参数的类型,最终编写出一些巨大的类型而不是仅仅一个标识符。
2条答案
按热度按时间osh3o9ms1#
我认为这很棘手,因为并非总是很明显地选择了默认值。例如,如果你有类似
$x_{1a0b1} x$
的表达式,那么在这种情况下,我们需要分析表达式的含义来确定是否存在歧义。
hgtggwj02#
这仅适用于类型参数具有显式默认值且未被覆盖的情况。我认为这对于具有推断参数的函数可能并不特别有用,但对于接受可选类型参数的类型/类/接口更有用。