You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让继承接口的泛型函数参数的TSDoc文档在VSCode正常显示

问题原因

这是TypeScript语言服务的默认行为:当你向带泛型约束的函数传入对象字面量时,TypeScript会优先将入参推断为你传入的字面量本身的类型,不会主动关联泛型约束Test的元信息,所以属性对应的TSDoc注释不会被读取到。非泛型函数因为参数类型固定为Test,会直接关联对应的类型元信息,所以注释可以正常显示。

可行解决方法

有两种常用的方案可以解决这个问题:

方案1:调用时显式指定泛型参数

调用withGeneric的时候手动指定泛型类型为Test,强制TypeScript复用Test的类型元信息:

withGeneric<Test>({
    someField: "" // 悬停即可看到注释
});

这种方案适合你每次调用时都确定入参就是Test类型、不需要额外的字面量类型推断的场景。

方案2:修改泛型函数的参数类型定义

给泛型参数的类型加一层和约束的交叉类型,强制TypeScript把Test的类型元信息合并到入参类型里:

// 仅修改参数类型为 T & Test 即可,其余逻辑不需要改动
function withGeneric<T extends Test>(arg: T & Test) {
    return arg;
}

改完之后不需要调整调用代码,直接悬停调用时的someField就可以正常显示TSDoc注释,同时不会影响泛型原本的类型推断能力,适合需要保留泛型灵活性的场景。

内容的提问来源于stack exchange,提问作者Otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:36:03