Я использую библиотеку для сериализации объектов, она поддерживает настраиваемые преобразователи для сериализации / десериализации данных.
Для того, чтобы сделать это для перечислений, вам нужно использовать настраиваемый преобразователь, расширяющий следующий интерфейс.
export interface JsonCustomConvert<T> {
serialize(data: T): any;
deserialize(data: any): T;
}
Это то, что у меня сейчас есть:
@JsonConverter
export class MyEnumConverter implements JsonCustomConvert<MyEnumConverter> {
serialize(val: MyEnumConverter): string {
return MyEnumConverter[val];
}
deserialize(val: any): MyEnumConverter {
const possibleValidEnum = (<any>MyEnumConverter)[val];
if (possibleValidEnum === undefined) {
throw Error();
}
return <MyEnumConverter>possibleValidEnum;
}
}
Проблема, очевидно, в том, что вам нужен конвертер для каждого перечисления. Есть ли способ заставить это работать с использованием универсального типа накласс для любой перечислимой строки с индексом?
Нет смысла показывать примеры, которые я получил до сих пор, так как я изучаю язык, и любая попытка просто приводит к случайным ошибкам.
Редактировать:
Вот рабочий пример моей проблемы, требующей преобразователь для каждого значения перечисления.
https://stackblitz.com/edit/typescript-t2kdyx