Probably isReadonly property doesn't make sense and is not effectively used for any relevant purpose of runtime type validation. I think it should be removed from runtime object and only work at compile-time, i.e. asReadonly should only transform the static typing of the Record or Array. (Additionaly, I believe it can even be removed from type parameters, just by doing type mapping instead)
I'd like to obtain users' opinions here about this. Do you use the property for runtime validation?