Объявить более узкий тип - очень больно: тут лишь пример, работа идёт со сложными структурами, с кучей вариантов и юнионов вложенных друг в друга.
Это тут задать узкий тип со string или со string[] - легко, а когда юнион типы вложены в юнион типы - это куча мартышкиной работы, по описанию того, что и так есть.
Объявить более узкий тип - очень больно: тут лишь пример, работа идёт со сложными структурами, с кучей вариантов и юнионов вложенных друг в друга.
v-bind="$props"
, логично?)
У нас действительно очень разные представления о костылях. Для меня "чаще всего фиксится просто интуитивно" - не является каким-то оправданием. Если я в любой момент могу нарваться на странное поведение, далёкое от спецификации и должен для его исправления писать неочевидный код, специфичный для конкретного браузера, причём на каждый случай разный - это, вполне очевидно, значит что браузер требует грязых костылей.
Как эксперимент, давайте-ка "чисто интуитивно" дополните код из моего ответа так, чтобы при width: 30px он работал также как в нормальных браузерах.