欢迎!请查看关于页面以了解如何使用本服务的一些更多信息。
评论者:pkillean
此补丁包含
comp/resolve-types现在在存在的情况下移除括号,并在检测到大于1个类型时发布它们。这使得括号的使用是可选的,并且现有代码不会中断(此外的好处是它可能现在可以工作了)
对comp/resolve-type的更改1. 检查由closure识别的js全局变量如document或window1. 允许.dot.delimited.forms通过,这样我们就可以使用在externs定义的类型,避免不必要的解析 1. 使用ana/resolve-existing-var并在存在“未解析的jsdoc类型”警告 1. 检查已解析变量是否为协议,如果不是则警告。这比Closure的标准未识别类型错误更有信息量
对comp/resolve-types的测试
评论者:dnolen
明天我会尝试更仔细地查看这个问题。
修补程序正在前进,请移除js-doc-type元数据。只需扩展{{resolve-existing-var}}的签名,以便它接受另一个参数 - {{confirm-var-exists}}处理程序。
js-doc-type
CLJS-1627-1.patch{{resolve-existing-var}}现在有一个额外的参数,可以接受传递给{{confirm-existing-var}}的缺失变量处理程序。
这揭示了一个问题,即使用对象协议的{{deftype}} + {{defrecord}}发出解析后的名称,而实际上它们不应该这样做。例如 : "@implements {cljs.core.async.impl.timers.Object}" --> 错误的类型注解
由于{{Object}}是一个特例,简单地将它排除在注释之外应该就能解决这个问题。另一个补丁即将到来。
CLJS-1627-2.patchdeftype和defrecord的emit*方法现在会过滤掉对象协议。
这产生了一个有趣的结果!没有更多的错误类型注解,静态分析现在可以继续...而且有很多东西要分析。有很多关于参数不一致(尤其是cljs.core.IndexedSeq)的信息,类型不匹配等等。它甚至还包含了类型覆盖率百分比。有很多要分析,但非常酷。
CLJS-1627-3.patch 解决外部require 添加数组与对象的类型应用支持 GC喜欢大写Object & Array,小写string和number。 支持显式可空类型,变量类型参数函数类型上下文修饰符{{this}} + {{new}}
-Missing是GC的“记录类型”。也可能有用填充节点外部的常见类型。
CLJS-1627-4.patch 修复了上一个补丁中的几个问题 添加了记录类型支持。应包含所有内容(链接:https://developers.google.com/closure/compiler/docs/js-for-compiler#types 文本:此处)
更新补丁
评论者:mfikes
CLJS-1627-5.patch不再适用
第6个补丁 将js注释通过comp/emit-comment进行路由,该操作已被修改以处理内联注释。 支持标签:param, return, type, implements, typedef, enum, extends, throws, lends, const, this添加了宏core/goog-typedef。这允许您命名自定义+类型并在注解中引用它。
还需要更多工作来支持多参数函数,但我想这基本上解锁了基本的静态类型检查 :-)
嗨,Patrick,CLJS-1627-6.patch不适用于master。
本应先喝咖啡
CLJS-1627-7.patch不适用于当前master