Продвинутый Typescript
2026-02-26 20:15 Diff

При сопоставлении типов можно менять атрибуты свойств такие как неизменность (immutability) и необязательность (optionality). Делается это с помощью соответствующих модификаторов: readonly и ?.

Чтобы добавить или удалить эти модификаторы, можно использовать префиксы + или -. Если не использовать префикс, то подразумевается что модификатор будет добавлен, то есть по умолчанию префикс +.

Примеры использования модификаторов есть в Utility Types:

Подобным образом можно написать и тип, который делает все свойства типа изменяемыми, то есть удаляет атрибут readonly:

Благодаря таким типам легче делать производные типы из уже имеющихся.

Например, в приложении может быть тип DefaultUser для не авторизованного пользователя у которого все поля необязательные:

Из него можно сделать авторизованного пользователя с помощью типа Required:

Рекомендуемые программы