欢迎!请查看关于页面以了解有关此信息的工作方式。
评论由:pkillean发表
此补丁包括
comp/resolve-types现在在存在的情况下删除括号,并检测到>1个类型时发出它们。这使括号的使用成为可选的,并且现有代码保持完整(并且可能现在可以工作)
对comp/resolve-type的更改1. 对闭包识别的js全局变量(如document或window)进行检查1. 允许点分隔的表格形式通过,这样我们可以使用在externs中定义的类型,避免不必要的解析 1. 使用ana/resolve-existing-var并发出“未解决的jsdoc类型”警告1. 检查解析的变量是否为协议,否则发出警告。这比闭包的标准未知类型错误更有信息量
为comp/resolve-types编写测试
发表评论的人:dnolen
感谢,我会尽量明天更仔细地查看。
补丁正在接近完成,请删除 js-doc-type 元数据。只需扩展 {{resolve-existing-var}} 的签名以接受一个额外的参数 - the {{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 外部 为 Array 和 Object 添加类型应用支持 GC 适用于 Object & Array 的为大写,适用于 string 和 number 的小写。 支持显式 null 类型,变量类型参数* 函数类型上下文修饰符 {{this}} + {{new}}
缺少 GC '记录类型'。填写常见类型的节点外部定义可能也很有用。
CLJS-1627-4.patch 修复了上一个补丁中的几个问题,增加了记录类型支持。以下是所有内容(链接:[https://developers.google.com/closure/compiler/docs/js-for-compiler#types](https://developers.google.com/closure/compiler/docs/js-for-compiler#types) 文本:此处)
更新补丁
评论者:mfikes
CLJS-1627-5.patch 已不再适用
补丁6 通过 comp/emit-comment 路由 js 注释,该组件已经修改过以处理内联注释。 支持的标签:param,return,type,implements,typedef,enum,extends,throws,lends,const,this,添加宏 core/goog-typedef。这让你可以在注释中命名自定义类型。
需要更多工作来支持多参数函数,但我认为这基本上打开了基本静态类型检查的大门!
Hey Patrick,CLJS-1627-6.patch 适用于 master 分支。
应该先喝杯咖啡
CLJS-1627-7.patch 文件不适用于当前主分支