AWS DynamoDB не хранит значения Date
, поэтому все значения даты / времени должны быть сериализованы в строки ISO 8601 перед сохранением, а затем должны быть десериализованы из строк в Date
при получении.
Я создал пару универсальных вспомогательных функций TypeScript для этой сериализации и десериализации.Но я не уверен, как сделать эти функции типобезопасными.Я также не хочу иметь дело с обслуживанием пар нормальных и сериализованных типов - вместо этого я просто хочу определить «нормальный» тип и использовать определение универсального типа для определения сериализованного типа.
В частности, учитывая некоторый тип T
, который может иметь свойства типа Date
(либо на верхнем уровне, либо во вложенных объектах), я хочу создать определение типа для Serialized<T>
, которое имеет ту же форму, что иT
за исключением того, что все свойства Date
-типа заменены на string
.Возможно ли это?
Например, учитывая объект, который выглядит следующим образом:
interface OriginalType {
foo: Date,
bar: number,
nested: {
created: Date
}
}
Я хочу закончить с типом, подобным приведенному ниже: (но без ввода вручнуюопределение)
interface SerializedType {
foo: string,
bar: number,
nested: {
created: string
}
}
Какой должна быть декларация для Serialized<T>
?