type Default = T; type RecursiveItem = { name: string; children?: RecursiveItem[]; }; interface SchemaRoot { items: Default, []>; moreItems: Default, []>; }