Middle
Ar teisinga iškviesti funkciją getUsername su objektu, kurio tipas yra IUser (pirkėjo nuosavas interfeisas), jei laukų struktūra atitinka TUser iš bibliotekos TypeScript? Paaiškinkite struktūrinio tipizavimo principą.
sobes.tech AI
Atsakymas iš 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.