LINUX.ORG.RU

История изменений

Исправление 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», которое каким-то чудным образом к запрещенным веществам отношения не имеет.

Вы будто из криокамеры недавно вылезли, ей-богу. Сейчас ведь половина настройки «микросервиса» делается на аннотациях во всех мейнстрим языках, а эти самые аннотации обрабатываются только в рантайме. Поэтому состояние «собралось но не работает» это теперь что-то вроде нормы.