Пример - содержательная и приятная статья про квадрево(Кресты, но я без напряга перевел на родной жабоскрипт)
P.S.
Итоговый переходом от древа к плоскому массиву - это шаг вперед относительно остальных найденных реализаций этой же структуры
/** это описание интерфейса */
interface SomeInterface {
/** это описание поля интерфейса */
someInterfaceField1: FieldType
/** это описание еще одного поля интерфейса */
someInterfaceField2: FieldType
}





Решил не очень масштабную, но концептуально интересную задачу.
Есть большое SPA-приложение, в нем идет обмен данными под грибамиgraphQL. Проблема - graphQL разросшийся, и без подсветки синтаксиса непонятно, какое поле что значит, откуда берется и какого типа данными запитывается.
Но ладно, пишем под каждую схему конфиг (поначалу хотелось сгрести все двумя регулярками - одну под схемы другую под клиентские описания запросов/фрагментов/мутаций, но VSCode-graphQL начал путаться и просить, чтобы ему явно дали соответствие "схема-описание").
А потом мне вдруг было видение, что этот же конфиг подходит и для недавно восстановленного скрипта автогенерации (через либу graphql-codegen.js) типов и запросов.
Чтобы была уверенность, что одни и те же схемы вытаскиваются из одних и тех же путей, а также есть возможность адресно обновлять не все схемы разом, а прицельно - только одну, по имени.
А концептуально здесь прикольно то, что я написал конфиг(json с маппингом схема→адрес для скачивания схемы→документы для схемы) для конфига graphql.config.json, который генерирует описания типов typeScript(*.d.ts, что тоже конфиг в своем роде ). Потому что нужно увеличивать глубину рекурсии. И делать это рекурсивно.
