目前,通过将函数包装在 _MetaFn_ 类型中来为函数实现 _IWithMeta_。
然而,这违反了对元数据值 _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_ 值。