Sobes.tech
Middle

TypeScript-də, əgər sahələrin strukturu kitabxanadakı TUser ilə uyğun gəlirsə, IUser (istehlakçı üçün öz interfeysi) tipində obyektlə getUsername funksiyasını çağırmaq düzgündürmü? Struktur tipinin prinsipini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

В 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.