Напиши тип Middle Утилитарные типы обновлено

Readonly не глубокий

Вопрос

Какой тип у поля tags после Readonly? Впишите тип.

type Post = { title: string; tags: string[] };
type T = Readonly<Post>['tags']; // /* ? */

Попробуйте сами

Напишите тип, как написали бы в коде.

Показать ответ и разбор

Коротко

Правильный тип: string[]. Readonly добавляет модификатор readonly только самим полям: переприсвоить post.tags = [] нельзя.

Правильный тип

string[]

Разбор

Readonly добавляет модификатор readonly только самим полям: переприсвоить post.tags = [] нельзя. Тип значения остаётся прежним, string[], поэтому post.tags.push('x') компилируется. Для неизменяемого массива нужен readonly string[] или рекурсивный DeepReadonly.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.