Nested objects and optional keys
{"id":1,"address":{"city":"Paris"},"items":[{"sku":"A1","qty":2},{"sku":"B2"}]} gives an Address interface with city: string, an Item interface with sku: string and qty?: number, and a Root with items: Item[].
qty is optional because the second item doesn't have it.