目前,_IWithMeta_ 通过将函数包装在 _MetaFn_ 类型中来为函数实现。
但是,这破坏了关于元值 _typeof_ 的某些预期
(defn Foo [_] "bar")
(goog/typeOf Foo)
;; => "function"
(goog/typeOf (with-meta Foo {:bar "baz"}))
;; => "object"
此情况不理想的主要情况是当与使用 _typeof_ 进行检查的JS代码交互时,例如React做的那样
(react-is/isValidElementType Foo)
;; => true
(react-is/isValidElementType (with-meta Foo {:bar "baz"}))
;; => false
理想情况下,_with-meta_ 应在可能的情况下保留 _typeof_ 值。