Вставьте [{"id":1,"label":"one"},{"id":2,"active":true}]. TypeDraft создаст RootItem, отметит label и active необязательными и запишет Root как RootItem[].

Optional означает наблюдаемое отсутствие

Знак вопроса показывает отсутствие ключа в одном объекте, но не доказывает, что контракт сервера разрешает пропуск.

Проверьте объединённый элемент

Подтвердите, что id всегда обязателен, а label и active действительно независимы. Если API использует разные варианты, замените общую optional-форму явным discriminated union.

Сверьте с настоящим контрактом

Скомпилируйте файл и сверьте каждое свойство с документацией API, OpenAPI или JSON Schema. Добавьте отсутствующие поля, исправьте null и optional и применяйте runtime-проверку на недоверенных границах. Храните показательный пример рядом с проверенным типом, чтобы замечать изменения.