Immutable<T>:T extends ((...args: any[]) => any) ? T : T extends number ? T : T extends bigint ? T : T extends object ? { readonly [K in keyof T]: Immutable<T[K]> } : T
Make a type immutable.
TODO - might need to extend depending type (e.g. doesn't handle Maps, Sets or Promises yet)
Make a type immutable.
TODO - might need to extend depending type (e.g. doesn't handle Maps, Sets or Promises yet)
Good reference implementation here: