TypeScript中JSDoc与类型映射、修改的交互规则查询
TypeScript中JSDoc与类型映射/修改的权威资料及机制疑问
场景验证:工具类型与映射类型对JSDoc的保留行为
基础场景:Pick/Omit保留原始JSDoc
const any: any = {}; type A = { /** FOO */ foo: 1, /** BAR */ bar: 2 } let A: A = any; A.foo // ^# 提示:FOO let A2: Pick<A, 'foo'> = any; A2.foo // ^# 提示:FOO let A3: Omit<A, 'bar'> = any; A3.foo // ^# 提示:FOO
进阶场景:映射类型保留原始JSDoc
type B = { [K in keyof A]: false } let B: B = any; B.foo // ^# 提示:FOO
核心需求
需要以下内容以深入理解相关技术:
- 来自权威来源的、关于TypeScript中JSDoc与类型映射/修改工作机制的完整资料列表
- TypeScript中JSDoc的整体工作机制说明
- 可用于JSDoc操作的完整技术列表
具体疑问
- 是否可以将类型
{ /** foo */ a: 1 }转换为{ /** foo */ b: 1 }(即保留原JSDoc的同时修改属性名)? - 是否可以实现一个类似
function addJsdoc<T, ?>(fnWithoutJsdoc: T): <?<T>>的包装器,为没有JSDoc的函数类型添加JSDoc?
相关参考背景
TypeScript官方GitHub仓库中有编号为#41165的特性请求,内容为「文档化工具类型」,该请求关注工具类型对JSDoc的处理能力扩展。
内容的提问来源于stack exchange,提问作者Dimava
相关产品推荐
相关产品推荐

