Лучший подход для обработки дат на машинописных интерфейсах с сервера - PullRequest
0 голосов
/ 05 июня 2019

После этого вопроса Даты в интерфейсе Typescript на самом деле являются строками при проверке

Я определил интерфейс машинописи для ответа, полученного от вызова API сервера, в котором есть параметр Date.Поскольку он представлен как json и является строкой, дальнейшие вызовы этого параметра работают в среде IDE, но не будут работать в браузере, поскольку на самом деле это строка.

Я уже решил ее, используя новыйDate (), когда используется этот параметр, но это отрицательно сказывается на том, чтобы иметь его в качестве Date.

Я мог бы изменить его на класс вместо интерфейса, но достаточно ли это хорошая причина для этого?А для больших объектов это много шаблонного ...

Я мог бы проанализировать этот ответ на сервисе и преобразовать его в Date?Или в перехватчике (любая идея как?)?

export interface ResourceMovement {
  lastMovementDate?: Date;
}

// got this from the server
const movement: ResourceMovement;

// no error on IDE, but error on browser
const time = movement.lastMovementDate.getTime();

В основном я ищу идеи и обсуждение наиболее чистого и многоразового способа решения этой проблемы!

1 Ответ

1 голос
/ 05 июня 2019

Можно рассмотреть несколько подходов.

Наиболее распространенным является использование меток времени.Временные метки - это числа в MS с 1 января 1970 года по Гринвичу + 0.любой язык, на котором я знаю, может читать метку времени.

Второй подход заключается в использовании определенных строк, таких как даты UTC или даты ISO.Это приемлемые форматы, которые могут читать большинство языков, если не все.Они содержат часовой пояс, в отличие от отметки времени.

Решение для использования в значительной степени зависит от ваших потребностей: если вам нужно, чтобы дата была установлена ​​сервером, тогда вам нужно использовать метку времени.Но если вы хотите, чтобы ваши пользователи устанавливали дату в соответствии с их языком, вам нужно будет использовать строку.

Теперь, чтобы преобразовать ваши даты в нужный формат, я бы лично использовал картограф в выделенном утилите / сервисе.

Проблема с перехватчиком заключается в том, что вы не можете точно знать, какое поле является датой, поскольку они не являются экземплярами Date, а являются строками / числами.

Возможно, вы могли бы использовать перехватчик с пользовательскими заголовками, чтобы определить, какое поле конвертировать, но для уничтожения таракана используется MOAB ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...