TS TypeScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Встроенные служебные типы

Разбирает тему «Встроенные служебные типы» на практических сценариях: поиск дефектов, сравнение решений и оценка последствий. Вопросы требуют читать код, сопоставлять статические гарантии с поведением JavaScript и выбирать решение, которое не рассыплется при развитии проекта.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 25
Какой объект подходит Partial<User>?
TypeScript
type User = { id: string; name: string };
type UserPatch = Partial<User>;
Вопрос 2 из 25
Что делает Required<Options>?
TypeScript
type Options = { cache?: boolean; timeout?: number };
type Complete = Required<Options>;
Вопрос 3 из 25
Почему Partial не всегда подходит для PATCH API?
TypeScript
type User = { id: string; email: string; role: "user" | "admin" };
type Patch = Partial<User>;
Вопрос 4 из 25
Когда Required<T> безопасно применять к данным?
Вопрос 5 из 25
Как exactOptionalPropertyTypes меняет смысл Partial<T>?
Вопрос 6 из 25
Какой тип создаёт Pick<User, "id" | "name">?
TypeScript
type User = { id: string; name: string; passwordHash: string };
type PublicUser = Pick<User, "id" | "name">;
Вопрос 7 из 25
Что делает Omit<User, "passwordHash">?
TypeScript
type User = { id: string; name: string; passwordHash: string };
type PublicUser = Omit<User, "passwordHash">;
Вопрос 8 из 25
Как сделать патч только для name?
TypeScript
type User = { id: string; name: string; role: string };
type NamePatch = /* ? */;
Вопрос 9 из 25
Pick или отдельный DTO — что выбрать для публичного API?
Вопрос 10 из 25
Почему Omit большого типа по одному секретному полю может быть хрупким?
Вопрос 11 из 25
Что описывает Record<Role, boolean>?
TypeScript
type Role = "admin" | "editor" | "viewer";
type Enabled = Record<Role, boolean>;
Вопрос 12 из 25
Почему Record<string, User> не гарантирует существование произвольного ключа во время выполнения?
TypeScript
type User = { id: string };
const users: Record<string, User> = {};
const user = users["missing"];
Вопрос 13 из 25
Какой Record подходит для частичного словаря ролей?
TypeScript
type Role = "admin" | "editor" | "viewer";
Вопрос 14 из 25
В показанном фрагменте когда Map лучше Record?
Вопрос 15 из 25
Почему Record<string, unknown> лучше Record<string, any> для непроверенного словаря?
Вопрос 16 из 25
Какой тип создаёт ReturnType<typeof build>?
TypeScript
function build(id: string) {
  return { id, createdAt: new Date() };
}
type Built = ReturnType<typeof build>;
Вопрос 17 из 25
Что даёт Parameters<typeof send>?
TypeScript
function send(url: string, retries: number = 2): Promise<void> {
  return Promise.resolve();
}
type Args = Parameters<typeof send>;
Вопрос 18 из 25
Какой тип получает S?
TypeScript
class Service { run() {} }
type S = InstanceType<typeof Service>;
Вопрос 19 из 25
Почему ReturnType может слишком тесно связать публичный DTO с реализацией функции?
Вопрос 20 из 25
Как тестировать refactor функции, тип которой используется через Parameters/ReturnType?
Вопрос 21 из 25
Какой пример лучше проверяет различие Partial<T> и Pick<T, K>?
TypeScript
type User = { id: string; name: string; active: boolean };
type Patch = Partial<User>;
type Label = Pick<User, "id" | "name">;
Вопрос 22 из 25
Какой объект должен быть запрещён для Record<"draft" | "published", number>?
TypeScript
type Counts = Record<"draft" | "published", number>;
Вопрос 23 из 25
Почему тест ReturnType<typeof makeUser> может стать хрупким публичным контрактом?
Вопрос 24 из 25
После замены Omit<T, K> на собственный mapped type тесты компилируются, но optional-свойства стали обязательными. Что добавить?
Вопрос 25 из 25
Какой набор тестов нужен для Parameters<F> у перегруженной функции?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу