Typescript Type Level Programming Recursive Conditional Tuple Permutation
Definisi
Type-level programming = menulis logika di dalam sistem tipe (bukan runtime) pakai conditional types, infer, dan recursion lewat union/tuple. Contoh: Permutation<T>, DeepReadonly<T>, Join<T, D>.
Kapan dipakai
Pakai saat ingin constraint compile-time kuat tanpa runtime cost: route param types, schema-derived types, DSL tipe. Hindari kalau cuma butuh runtime sederhana — type-level berat sulit dibaca.
Cara kerja
DeepReadonly
type DeepReadonly<T> = {
readonly [K in keyof T]: T[K] extends object ? DeepReadonly