TypeScript does a pretty good job here if you're willing to add a bit of extra syntax:
const a = [1,2,3]
a.push(4)
const b: readonly number[] = [1,2,3]
b.push(4) // Property 'push' does not exist on type 'readonly number[]'.