Метаданные JSON. JSON - язык разметки текста на основе JS (java script - языка программирования). JSON проще, чем XML, но и его нужно проверять и данные валидировать. Проверку данных удобнее производить, используя метаданные. Метаданные JSON хранятся в схеме метаданных JSON SCHEMA. Пример JSON SCHEMA: { "simple form": { "title": "A registration form", "description": "A simple form example.", "type": "object", "required": [ "firstName", "lastName" ], "properties": { "firstName": { "type": "string", "title": "First name", "default": "Chuck" }, "lastName": { "type": "string", "title": "Last name" }, "age": { "type": "integer", "title": "Age" }, "bio": { "type": "string", "title": "Bio" }, "password": { "type": "string", "title": "Password", "minLength": 3 }, "telephone": { "type": "string", "title": "Telephone", "minLength": 10 } } } } В JSON схеме также, как в XML схеме используется иерархическая структура данных, которые вкладываются в корневой ROOT блок - "simple form". Метаданные позволяют проверять данные на этапе их ввода посредством форм ввода. Правила проверки (валидации) не позволят ввести неправильные данные.
Наверняка, многие из вас сталкивались с проблемой клонирования объектов. И скорей всего сталкивались с проблемой, когда спред ({ ...foo }) не работал на вложенные объекты (массивы). Хотя в интернете написано, что работает. Для тех, кто не знает расскажу.
Есть два типа клонирования - поверхностное и глубокое.
Поверхностное, если простым языком, замена ссылки вашей переменной на новую. Например: const foo = { a: 1, b: 2, c: { x: 2 } };
const oldFoo = foo;
const newFoo = { ...foo };
oldFoo.a = 2;
newFoo...