Почему typescript не кидает exception на неправильное унаследование интерфейса?

TypeScript не кидает исключение на неправильное унаследование интерфейса, поскольку в своей философии он стремится быть расширяемым и гибким языком программирования, который позволяет разработчику работы с большими и сложными кодовыми базами.

Одной из главных сущностей в TypeScript являются интерфейсы, которые определяют контракты для классов, объектов или функций. Когда класс или объект реализует интерфейс, TypeScript проверяет, соответствуют ли свойства и методы класса или объекта требованиям, указанным в интерфейсе.

Основной принцип TypeScript - это принцип "степени свободы", который подразумевает, что код, написанный на TypeScript, может работать и без ошибок, несмотря на то, что он может быть не до конца правильным или соответствовать указанным в интерфейсах требованиям. Это позволяет разработчикам вносить изменения в код без необходимости полностью переписывать его или исправлять все ошибки.

Вместо того, чтобы кидать исключение, TypeScript предупреждает о потенциальных проблемах в виде предупреждений во время компиляции. Компилятор TypeScript указывает на неправильное использование интерфейса и предлагает возможные исправления, чтобы разработчик мог привести код в соответствие с интерфейсом.

Например, если класс или объект не реализует все методы, определенные в интерфейсе, TypeScript выведет предупреждение о том, что данный класс или объект не соответствуют интерфейсу. Однако это не вызовет ошибку времени выполнения, так как TypeScript вместо этого сгенерирует JavaScript-код, который будет работать безошибочно, но не будет полностью соответствовать интерфейсу.

Таким образом, TypeScript предоставляет гибкость в работе с интерфейсами, позволяя разработчику более свободно манипулировать классами и объектами, несмотря на неполное соответствие интерфейсам. Вместо того, чтобы вызывать исключение, TypeScript дает возможность разработчику обнаружить потенциальные проблемы и вносить соответствующие исправления в код.