Условный интерфейс TypeScript: динамическая типизация с условными типами

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

Вот пример использования условных типов в интерфейсах TypeScript:

interface User {
  id: number;
  name: string;
  isAdmin: boolean;
  // Conditional property: only available if isAdmin is true
  adminInfo?: {
    role: string;
    permissions: string[];
  };
}
// Usage example
const user: User = {
  id: 1,
  name: "John Doe",
  isAdmin: true,
  adminInfo: {
    role: "admin",
    permissions: ["read", "write"],
  },
};
// Accessing conditional property
if (user.isAdmin && user.adminInfo) {
  console.log("User role:", user.adminInfo.role);
  console.log("User permissions:", user.adminInfo.permissions);
}

В этом примере интерфейс Userимеет условное свойство adminInfo, которое доступно только в том случае, если свойство isAdminимеет значение true.. Это позволяет моделировать объект пользователя с дополнительной информацией, специфичной для администратора, которая доступна только пользователям с правами администратора.