Ts — Playground 35 [work]
👉
Date: April 14, 2026 Author: TypeScript Team / Community Spotlight ts playground 35
type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]>; }; interface ApiResponse { user: { name: string; settings: { theme: string } }; } 👉 Date: April 14, 2026 Author: TypeScript Team
let data: DeepReadonly<ApiResponse>; data.user.settings.theme = "dark"; // Error: Cannot assign to 'theme' 👉 Date: April 14
With , I clicked DeepReadonly<T[P]> and saw the recursive expansion — instantly clear why nested properties become readonly. Community Spotlight TS Playground 35 includes contributions from over 80 developers — from a one-line fix for Japanese IME support to the entire plugin system architected by a first-time OSS contributor.