I'm learning TypeScript coming from Python. Write me a small example that demonstrates interfaces, generics, and async/await — maybe a simple API client that fetches data and returns typed results.
Add error handling to the fetchJson function — implement a retry with exponential backoff for failed requests, and write it to a file called api-client.ts