2024 年 Clojure 状态调查! 中分享你的想法。

欢迎!有关这个网站的更多信息和功能,请参阅 关于 页面。

0
ClojureScript

使用 deftype/defrecord 定义的包含 {{default}} 字段的类型在属性访问时将错误地返回 {{nil}}。以下示例将返回 {{nil}}。

`
(deftype Foo [default])

(let [foo (Foo. "bar")]
(.-default foo))
`

9 个回答

0

评论由:noprompt 制作

附加补丁。我应该指出,我不得不从编译器命名空间借用 js-reserved,并且警告消息提供了硬编码的混乱符号信息,而不是重用编译器的 munge fn。

0

评论由:noprompt 制作

为了留下历史,我应该提供更多关于这个补丁的背景信息(出于某种原因我无法编辑问题标题)。问题不只是一个 {{.-default}},而是任何也是 JavaScript 标识符的属性名(例如{{public}}、{{private}}、{{if}})。

0

评论由:dnolen 制作

请将 {{js-reserved}} 和任何类似的诸如 {{munge}} 的辅助函数升到共享命名空间 {{cljs.util}} 中,以便可以进行逻辑共享并避免硬编码。谢谢。

0

评论由:noprompt 制作

你确定,David?这可能会使这个补丁变得有点嘈杂。如果没有问题,我很乐意这样做。

0

评论由:dnolen 制作

我确定,我想避免这种代码重复。最终会更干净,并且向前发展得更好。

0

评论由:noprompt 制作

更新为使用新的重构

0

评论由:dnolen 制作

这个警告并不理想。相反,我们只需焊接并确保属性访问始终正常工作。

0

评论由:dnolen 制作

现在我们有 CLJS-1620,一个警告似乎是一个好的答案。

0
参考: https://clojure.atlassian.net/browse/CLJS-871 (由noprompt报告)
...