Проверяет понимание системы типизации TypeScript и её отличий от статической типизации в C# или Java.
Система типизации определяет, как язык проверяет и связывает типы данных. В TypeScript используется статическая типизация, как и в C# или Java, но с ключевым отличием в подходе к совместимости типов.
TypeScript основан на структурной типизации: тип считается совместимым, если его структура (свойства и методы) соответствует ожидаемой. Не важно, как называется класс или интерфейс — важна форма объекта. Это особенно полезно при работе с данными из API или сторонних библиотек, где нет необходимости создавать сложные иерархии классов.
interface Point { x: number; y: number; }
function printPoint(p: Point) { console.log(p.x, p.y); }
const obj = { x: 10, y: 20 }; // структурно совместим
printPoint(obj); // OKВ C# и Java применяется номинальная типизация: тип считается совместимым только если он явно объявлен как наследник или реализация. Например, объект должен реализовать интерфейс или наследоваться от класса, даже если его структура идентична.
// C#
interface IPoint { int X { get; set; } int Y { get; set; } }
class Point : IPoint { public int X { get; set; } public int Y { get; set; } }
// Объект без реализации интерфейса не подойдётСтруктурная типизация TypeScript делает язык более гибким и подходящим для динамических сценариев JavaScript, тогда как номинальная типизация C# и Java обеспечивает строгость и предсказуемость в крупных системах. Выбор зависит от контекста проекта и предпочтений команды.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию