Sobes.tech
Back to questions
Middle
1

Задача на TypeScript: корректен ли вызов функции getUsername с объектом типа IUser (собственный интерфейс потребителя), если структура полей совпадает с TUser из библиотеки? Объясните принцип структурной типизации.

Companies where asked
ОТП БанкОТП Банк

Answer from AI

sobes.tech AI

В TypeScript вызов функции с объектом типа IUser будет корректен, если структура полей IUser совпадает с TUser из библиотеки, даже если это разные интерфейсы. Это связано с принципом структурной типизации, который используется в TypeScript.

Структурная типизация означает, что совместимость типов определяется не по имени типа, а по их структуре — набору свойств и их типам. Если объект имеет все необходимые поля с правильными типами, он считается подходящим.

Пример:

interface TUser {
  id: number;
  name: string;
}

interface IUser {
  id: number;
  name: string;
}

function getUsername(user: TUser): string {
  return user.name;
}

const user: IUser = { id: 1, name: 'Alice' };

// Вызов корректен, так как структура совпадает
getUsername(user);

Таким образом, если поля и их типы совпадают, TypeScript позволит использовать объект IUser там, где ожидается TUser.