TypeScript版本: 3.6.1-rc
搜索词:
泛型函数元数据
泛型类型jsdoc
Map类型jsdoc
代码
interface Example {
/** This is property A. */
a: number;
}
function one(param: Example): void {};
one({
a: 1 // ✅ Hover over `a` to see description
});
function two<T extends Example>(param: T): void {};
two({
a: 2 // ❌ Description is lost
});
function three<T = Example>(param: T): void {};
three({
a: 3 // ❌ Description is lost
});
function four<T extends Example = Example>(param: T): void {};
four({
a: 4 // ❌ Description is lost
});
// Unexpectedly:
four<Example>({
a: 4 // ✅ Hover over `a` to see description
});
预期行为:
我希望至少在第四个或第五个示例上看到悬停描述,但我没有。
** playground链接:** 见demo
相关问题:
这与#21489类似,但后者涉及Map类型,而前者涉及泛型。
4条答案
按热度按时间pxyaymoc1#
我注意到这个现象只发生在调用函数的时候。在函数内部,元数据仍然存在。
nqwrtyyt2#
在您的示例中,当
Example
被明确地作为类型参数提供时,two
和three
也可以工作。问题似乎是对于T
的推断类型是结构体{ a: number; }
而不是Example
,而且前者没有后者所具有的 jsdoc。ahy6op9u3#
听起来像对象字面量属性的快速信息,当上下文类型是一个带有对象类型约束的类型参数时,应该为其具有匹配约束的属性提供jsdoc。
iecba09b4#
编辑-起初我认为这仅限于通用Map类型,但它都是泛型。