Напиши тип Senior Объединения и сужение обновлено
satisfies и расширение литерала
Вопрос
Какой тип получится? Впишите тип.
const c = { mode: 'dark' } satisfies { mode: string };
type M = typeof c.mode; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: string. satisfies не меняет выведенный тип, но контекстный тип участвует в выводе.
Правильный тип
string
Разбор
satisfies не меняет выведенный тип, но контекстный тип участвует в выводе. Здесь контекст для mode это string, литерал 'dark' в изменяемом свойстве расширяется, и получается string. Если бы проверяли против { mode: 'dark' | 'light' }, литерал сохранился бы: 'dark'. Чтобы сохранить литерал при широком типе, пишут as const satisfies ....
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
keyof от объединения объектов
Следующий вопрос
noUncheckedIndexedAccess и доступ по индексу