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

Тип результата Object.keys

Вопрос

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

const user = { id: 1, name: 'Аня' };
const keys = Object.keys(user); // keys: /* ? */

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

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

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

Коротко

Правильный тип: string[]. Object.keys всегда возвращает string[], а не ('id' 'name')[].

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

string[]

Разбор

Object.keys всегда возвращает string[], а не ('id' | 'name')[]. Причина в структурной типизации: значение типа { id: number; name: string } в рантайме может содержать и другие поля (объект подтипа), и обещать точный набор ключей было бы неправдой. Если вы уверены в объекте, пишут Object.keys(user) as (keyof typeof user)[], понимая риск.

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

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