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.