Я наткнулся на то, о чём я не уверен, что происходит. Рассмотрим следующий код:
interface T1 { value: number }
interface T2 { readonly value: number }
const t2: T2 = { value: 0 }
t2.value += 1
const t1: T1 = t2
t1.value += 1
Почему t2
можно присвоить t1
? С TypeScript 3.7+ (возможно, также более ранними версиями, но я не тестировал) все, кроме t2.value += 1
компилируется Если бы t2
действительно было доступно только для чтения во время выполнения, как показано ниже, это вызвало бы ошибку времени выполнения.
interface T { value: number }
const t2 = Object.freeze({ value: 0 })
const t1: T = t2
t1.value += 1