TypeScript被称为"turing complete"。 JSDoc样式键入功能是否像常规类型一样完整?我们可以做映射类型,条件类型,keyof等以及常规类型的所有事情吗?
很好奇,因为我想为实现类工厂混合的JS文件声明类型,并定义定义函数来接受对象并返回从对象定义生成的类。生成的类应具有受保护的成员和私有成员,并且mixins应返回具有受保护的/私有成员的类。
我想键入这些内容而不必转换为.ts
文件,只需保持JS代码不变即可。
使用JSDoc注释是否可以键入诸如从对象文字定义和类工厂mixin等生成的类之类的元数据?
答案 0 :(得分:0)
并非所有可以在TypeScript中表达的类型都可以在JSDoc中表示。示例:
/**
* @typedef Parameters
* A tuple of the types of the parameters of a function.
* @template T
* @type {(T extends (...args: infer U) => * ? U : never)}
*/
尝试使用此类型会使TypeScript服务认为Paramaters<T> = any
。这意味着不支持条件类型。
通常,您可以通过编写JSDoc并查看服务是否放弃并仅声明其为any
来确定JSDoc是否支持该类型。