Immutable references to mutable reference types

This is what TypeScript’s ReadonlyArray does. It basically is an interface that doesn’t have any the mutable methods on it.

let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error!

Would it be any easier/harder to have a generic that removes methods from a type? Then if you did like:

ARR : ReadOnlyArray(Array(Int32)) = [1, 2, 3]
ARR << 4 # => Undefined method '<<' for ReadOnlyArray(Array(Int32))