1

Эти два термина используются в этом documentation. Понятие struct легко понять. Объект, свойства которого фиксированы, но тогда у нас есть dict, который может иметь любое количество свойств так, как он отличается от обычного Object? зачем нужен отдельный тип для этой функции?В чем разница между struct и dict?

+0

'@ struct' и' @ dict' - это просто аннотации, которые сообщают компилятору, как объект будет использоваться. Это объясняется в документации, к которой вы привязались. Не уверен, что я понимаю вашу проблему ... –

+0

@FelixKling, поскольку я сказал 'struct', имеет вескую причину быть отдельным типом, но в javascript мы уже имеем неявное понятие о' dict' как Object, почему нам нужно создать отдельный тип для этого? на самом деле мы можем использовать простой объект как dict. – CodeYogi

+0

Это означает, что каждый объект, явно не аннотированный как @struct, может быть доступен только с использованием нотации в виде скобок, т. Е. Как использовать объект будет неявно ограниченным. Явное кажется лучше? –

ответ

1

Я думаю, что основное различие дается на том documentation page

Используя @struct, вы знаете, что компилятор будет переименовать все свойства безопасно, потому что вы не можете использовать доступ кронштейн. Используя @dict, вы знаете, что свойства будут иметь одно и то же имя после компиляции.

(Ключом к пониманию о компиляторе закрытия является то, что properties accessed with bracket notation are not renamed).

Использование компилятора закрытия ограничивает использование JavaScript в способах, которые вы указали. Вы сообщаете компилятору предупреждать вас, когда вы пишете код, который нарушает ограничения, введенные вами с аннотациями, такими как @struct и @dict.

@dict действительно «как обычный Object», как вы говорите. Используя @dict, вы сообщаете компилятору, что вы собираетесь добавлять свойства к объекту, и вы не хотите, чтобы эти свойства были переименованы в минимальные имена.

В отличие от @struct обычно используется для класса, где вам все равно, что компилятор переименовывает свойства. Вы также не ожидаете когда-либо добавлять свойство к такому объекту, так что это должно быть ошибкой, если вы это сделаете.

Кстати, примеры на этом page about struct and dict немного сложно понять, на мой взгляд, поэтому, если вы все еще запутались в чем-либо на этой странице, не стесняйтесь спрашивать больше.

+0

Любые мысли об этом http://stackoverflow.com/q/36770632/4260745? – CodeYogi

Смежные вопросы