Сумма заказа с доставкой получилась «990.00150» вместо 1140
type OrderRow = { id: number; total: number };
const { rows } = await pool.query<OrderRow>(
'SELECT id, total FROM orders WHERE id = $1', [id] // total NUMERIC(10,2)
);
const withDelivery = rows[0].total + 150;
Компилятор доволен, а в ответе API — строка "990.00150". Почему?
- Драйвер pg отдаёт NUMERIC строкой, а тип это скрыл
- TypeScript складывает number и число как строки
- PostgreSQL хранит NUMERIC как текст и так же его возвращает
- Параметр $1 превратил всю строку результата в текст
