这两个术语在documentation中经常使用。 struct
的概念很容易理解,即对象的属性是固定的,但是我们有dict
,它可以有任意数量的属性,那么它与普通Object
有何不同?为什么需要一个单独的类型的功能?
答案 0 :(得分:1)
我认为关键区别在于documentation page
通过使用@struct,您知道编译器将安全地重命名所有属性,因为您不能使用括号访问。通过使用@dict,您知道编译后属性将具有相同的名称。
(理解闭包编译器的关键是properties accessed with bracket notation are not renamed)。
使用闭包编译器会以您指定的方式限制JavaScript的使用。您正在告诉编译器在编写代码时会发出警告,该代码会破坏您使用@struct
和@dict
等注释实施的限制。
@dict
确实像你说的那样“正常Object
”。通过使用@dict
,您告诉编译器您将要向对象添加属性,并且您不希望将这些属性重命名为最小名称。
相比之下,@struct
通常用于您不关心编译器重命名属性的类。您也不希望将属性添加到此类对象中,因此如果您这样做,则应该是错误。