Middle
Is het correct om de functie getUsername aan te roepen met een object van het type IUser (eigen interface van de consument) in TypeScript, als de veldstructuur overeenkomt met TUser uit de bibliotheek? Leg het principe van structurele typechecking uit.
sobes.tech AI
Antwoord van 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.