Middle
TypeScript'te, alanın yapısı kütüphanedeki TUser ile aynıysa, IUser (tüketiciye ait kendi arayüzü) türündeki bir nesneyle getUsername fonksiyonunun çağrısı doğru mu? Yapısal tiplemenin prensibini açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
В 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.