TypeScript не следует семверу

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

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

Если же разработчики не хотят с этим связываться, то они просто не выходят из версии 0.x. Как разработчики Axios этак лет 8 с момента старта проекта.

Но в случае TypeScript мажорной нужно считать не первую, а вторую версию:

TypeScript never claimed to follow semantic versioning, in the sense that breaking changes imply major versions.

TypeScript, however, promises no breaking changes after a stable release. So no breaking changes between 2.1.5 and 2.1.6, 2.1.*.

My recommendation is fix your version of typescript to major.minor instead of just major. E.g. ^2.1 and not ^2.