Sobes.tech
Middle

Ist der Aufruf der Funktion getUsername mit einem Objekt vom Typ IUser (eigene Schnittstelle des Verbrauchers) in TypeScript korrekt, wenn die Feldstruktur mit TUser aus der Bibliothek übereinstimmt? Erklären Sie das Prinzip der strukturellen Typisierung.

sobes.tech KI

Antwort von 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.