Вступить в клуб →
средняявопросTypeScript: дженерики и контракты с API

Тип без пароля не помешал отправить пароль в аналитику

type User = { id: number; email: string; password: string };
type PublicUser = Omit<User, "password">;

function trackSignup(user: PublicUser) {
  analytics.send("signup", { ...user });
}

const user: User = await registerForm.submit();
trackSignup(user);

В событиях аналитики обнаружились пароли. Почему тип PublicUser не защитил?

  • Типы стираются при компиляции: объект передан целиком, с паролем
  • Omit работает только с интерфейсами, а не с type
  • Spread-оператор возвращает поля, удалённые через Omit
  • Компилятор должен был запретить передачу User, это баг TypeScript

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела