Литеральный тип
Типом может быть не только «любая строка», но и одно конкретное значение. Такой тип называется литеральным:
Онлайн-редактор кода, разбор решения и отметки о прогрессе доступны после входа.
ВойтиСоздать аккаунт — бесплатноТипом может быть не только «любая строка», но и одно конкретное значение. Такой тип называется литеральным:
Переменной типа Yes можно присвоить только строку "yes", любая другая строка будет ошибкой.
В задании тип размечен слишком широко:
Формально ошибки нет, код компилируется. Но string разрешает что угодно: "dark", "lihgt" с опечаткой, пустую строку. Для темы оформления это плохое описание, потому что множество допустимых значений на самом деле конечно.
Литеральные типы это как раз способ сузить его до перечисления. Здесь нужно самое узкое: ровно одно допустимое значение.
Подробнее: Literal Types — справочник TypeScript.
Сузь тип Theme так, чтобы единственным допустимым значением была строка "light". Значение current менять не нужно.