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

ReturnType функции с as const

Вопрос

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

function ok() {
  return { ok: true, code: 200 } as const;
}
type R = ReturnType<typeof ok>; // /* ? */

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

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

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

Коротко

Правильный тип: { readonly ok: true; readonly code: 200 }. as const делает все свойства readonly и не расширяет литералы: true остаётся true (а не boolean), 200 остаётся 200.

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

{ readonly ok: true; readonly code: 200 }

Разбор

as const делает все свойства readonly и не расширяет литералы: true остаётся true (а не boolean), 200 остаётся 200. Без as const было бы { ok: boolean; code: number }. Так часто типизируют результаты, по которым потом делают сужение: if (r.ok).

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

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