如果你有像以下这样的代码
(let [^string x 3] )
我们通常会优先选择类型提示而不是推断的类型。但在我们推断了一个类型且该类型与类型提示不一致的情况下,发出诊断可能是有用的。
如果推断的类型是提示的超集,那么我们不应该发出警告。例如,如果我们推断任意类型,则不应发出警告。另外,如果我们推断例如 1. } } } 但我们有提示 {{string}},我们可以采取开发者实际上是说 {{clj-nil}} 不会发生的立场。
但是,另一方面,如果我们推断 {{number}} 并有一个 {{string}} 提示,那么明显出了问题。