JSDoc与Closure类型系统中`any`和`*`是否存在差异?
JSDoc中
{any}和{*}的差异分析 工具实现层面的差异
- 在eslint-plugin-jsdoc里,
{any}和{*}是完全等价的,插件会把两者都解析为“任意类型”,可以互换使用。 - 但在Closure Compiler的类型系统中,不存在
{any}这个写法——它只用{*}来表示“任意类型”(对应其文档里提到的「any」概念);而Closure里的「all」是另一个独立概念,指所有类型的联合,和{*}完全不是一回事。
通用规范层面的溯源
从JSDoc的演进来看,{*}是更传统的“任意类型”写法,而{any}是后来为了和TypeScript等现代类型系统对齐而新增的写法。现在大部分支持JSDoc的工具(比如VS Code的JavaScript语言服务)都兼容两种写法,但在严格遵循Closure类型规则的场景下,必须使用{*}。
实际使用建议
- 如果你的项目仅用eslint-plugin-jsdoc做JSDoc校验,两种写法随便用,没有区别;
- 如果需要适配Closure Compiler,只能用
{*},因为它不识别{any}; - 跨项目或团队协作时,建议统一写法,优先选
{*}兼容性更好。
内容的提问来源于stack exchange,提问作者neverendingqs
相关产品推荐
相关产品推荐

