В последних нескольких проектах я использовал следующий шаблон, чтобы убедиться, что данные, полученные из серверной части, всегда имеют формат, требуемый интерфейсом:
var response = {
id:"1234",
someText:null,
someDate: "2018-07-27T14:16:56"
};
var template = {
id: DataShape.integer(),
someText: DataShape.string(""),
someDate: DataShape.date(),
missingProperty: DataShape.integer()
}
var result = DataShape.copy(response, template);
console.log(result);
/*Result:
{
"id":1234,
"someText":"",
"someDate":{ },//Date Object 2018-07-27T18:16:56.000Z
"missingProperty":null
}*/
Прекрасно работает для нас и экономит много проверки в коде. (например, убедитесь, что не пытаетесь выполнить .toLowerCase () с нулевым значением)
Производительность тоже очень мала.
Что-то не так с этим подходом? По какой-то причине я не видел ни одной библиотеки, которая уже делает это.
(на самом деле я не ищу кодовый ответ, но было бы неплохо предложить поддерживаемую библиотеку)
Спасибо!