欢迎!请访问关于页面以获取更多关于如何使用本站的信息。
评论者:pkillean
此补丁包括
comp/resolve-types现在会在存在括号时将其删除,并在检测到1个以上的类型时发射它们。这使得括号的使用变得可选,且现有代码不会破碎(添加的好处是现在可能可以工作)
comp/resolve-type更改1. 检查js全局变量(如document或window),由Closure识别1. 允许点分隔形式通过,以便我们可以在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}}的丢失变量处理器。
这揭示了一个问题,即使用Object协议的{{deftype}} + {{defrecord}}发出解析的名称,但实际上不应该这样做。例如:“@implements {cljs.core.async.impl.timers.Object}” --> 错误的类型注解
由于{{Object}}是一个特例,因此仅从注释中排除它应可修复。即将到来的另一个补丁
CLJS-1627-2.patchdeftype和defrecord的emit*方法现在过滤掉Object协议。
这产生了有趣的结果!在没有了错误类型注解后,静态分析现在可以继续...并且有很多要说的。现在有各种各样的信息,如类型不匹配、数字类型和更多。它甚至还包含类型覆盖率百分比。这里有很多东西需要解析,但非常酷。
CLJS-1627-3.patch 修正 require extern 为 Array 和 Object 添加类型应用支持 GC喜欢大写Object & Array,小写string,number. 支持显示地可空类型,变量类型参数* 函数类型上下文修饰符 {{this}} + {{new}}
- 缺少 GC '记录类型'。填充节点 externs 对于常见类型也可能很有用
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。这允许您命名自定义类型并在注解中引用它。
还需要更多工作以支持多参数函数,但我认为这基本上解锁了基本的静态类型检查 :-)
嘿,帕特里克,CLJS-1627-6.patch 不适用于 master。
本应先喝咖啡
CLJS-1627-7.patch无法应用到当前的master版本