История изменений
Исправление alex0x08, (текущая версия) :
у вас есть фронт на ts, у которого где-то в моделях объявлено поле с типом «строка», но бекенд что-то там поменял у себя и вместо того где была «строка» стало «число»,
Рад за ваш бекэнд, коль уж он эволюционировал до того, что сам стал принимать решения. Видимо скоро он осознает себя и пойдет искать Сару Коннор.
Если серьезно то между бекэндом и фронтом еще есть такая штука под названием JSON, формат данных такой, внезапно стандартизированный.
В котором (опять же внезапно) есть четкие правила насчет поддерживаемых типов.
То что вы описываете возможно и случается на практике, но касается сложных вещей вроде обработки чисел с плавающей точкой или просто очень больших чисел.
Но отладчик на клиенсткой стороне тут тоже не особо поможет, потому что в таких случаях крайним назначается бекэнд и правки происходят на его стороне.
поскольку выполняется в браузере у вас не ts а js в котором стараниями мелкососа нет гвардов, то «число» запросто без ошибок и ворнингов присваивается вместо «строка» и никакого нормального реального способа,
Как говорила моя бабушка «да но нет».
Да, выполняется Javascript код, в который происходит трансляция из Typescript. Да, в Javascript нет строгой типизации, как в Typescript, поэтому транслятор ее стирает. Но помимо этого он также вставляет проверки на тип, которые берут и отрабатывают в рантайме, уже на Javascript. Вот такая коварная подлость.
т.е. если вы не покроете такой код 100% тестами у вас потенциально будут ошибки в коде, которые будут вылазить только на проде у пользователей
Не бывает 100% покрытия тестами для кода сложнее «Hello World», поэтому да, будут. Да, будут вылазить.
Чтобы сие не стало сюрпризом именно на продакшне, помимо юнит-тестов существует еще функциональное и интеграционное тестирование и даже «smoke-testing», которое каким-то чудным образом к запрещенным веществам отношения не имеет.
Вы будто из криокамеры недавно вылезли, ей-богу. Сейчас ведь половина настройки «микросервиса» делается на аннотациях во всех мейнстрим языках, а эти самые аннотации обрабатываются только в рантайме. Поэтому состояние «собралось но не работает» это теперь что-то вроде нормы.
в жабе просто объявляете коллекцию не женериком, а по-старому без указания клиенского типа и складывайте туда сразу все, что вздумается,
И немедленно умираете в муках от рака простаты. Либо от руки вашего тимлида или кто там у вас код проверяет.
Исходная версия alex0x08, :
у вас есть фронт на ts, у которого где-то в моделях объявлено поле с типом «строка», но бекенд что-то там поменял у себя и вместо того где была «строка» стало «число»,
Рад за ваш бекэнд, коль уж он эволюционировал до того, что сам стал принимать решения. Видимо скоро он осознает себя и пойдет искать Сару Коннор.
Если серьезно то между бекэндом и фронтом еще есть такая штука под названием JSON, формат данных такой, внезапно стандартизированный.
В котором (опять же внезапно) есть четкие правила насчет поддерживаемых типов.
То что вы описываете возможно и случается на практике, но касается сложных вещей вроде обработки чисел с плавающей точкой или просто очень больших чисел.
Но отладчик на клиенсткой стороне тут тоже не особо поможет, потому что в таких случаях крайним назначается бекэнд и правки происходят на его стороне.
поскольку выполняется в браузере у вас не ts а js в котором стараниями мелкососа нет гвардов, то «число» запросто без ошибок и ворнингов присваивается вместо «строка» и никакого нормального реального способа,
Как говорила моя бабушка «да но нет».
Да, выполняется Javascript код, в который происходит трансляция из Typescript. Да, в Javascript нет строгой типизации, как в Typescript, поэтому транслятор ее стирает. Но помимо этого он также вставляет проверки на тип, которые берут и отрабатывают в рантайме, уже на Javascript. Вот такая коварная подлость.
т.е. если вы не покроете такой код 100% тестами у вас потенциально будут ошибки в коде, которые будут вылазить только на проде у пользователей
Не бывает 100% покрытия тестами для кода сложнее «Hello World», поэтому да, будут. Да, будут вылазить.
Чтобы сие не стало сюрпризом именно на продакшне, помимо юнит-тестов существует еще функциональное и интеграционное тестирование и даже «smoke-testing», которое каким-то чудным образом к запрещенным веществам отношения не имеет.
Вы будто из криокамеры недавно вылезли, ей-богу. Сейчас ведь половина настройки «микросервиса» делается на аннотациях во всех мейнстрим языках, а эти самые аннотации обрабатываются только в рантайме. Поэтому состояние «собралось но не работает» это теперь что-то вроде нормы.