Middle
Da li je ispravno pozvati funkciju getUsername sa objektom tipa IUser (vlastiti interfejs potrošača) u TypeScript-u, ako struktura polja odgovara TUser iz biblioteke? Objasnite princip strukturnog tipiziranja.
sobes.tech АИ
Одговор од АИ
В 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.