Комментарии 5
Не поддерживаются интерфейсы, поля нужно инициализировать, приватные поля класса могут попасть в список, такие типы как enum, type union не поддерживаются…
По моему практического смысла это не имеет, слишком много ограничений.
Мне кажется в ts нормально такую задачу можно решить только при помощи code generation.
По моему практического смысла это не имеет, слишком много ограничений.
Мне кажется в ts нормально такую задачу можно решить только при помощи code generation.
+8
Некоторую базовую информацию о типах полей классов дает опция emitDecoratorMetadata
. Для чего-то большего — да, только кодогенерация.
+4
Автор смешал в кучу классы и объекты. Все, что позволяет такой подход, можно записать одной строчкой на Javascript, а к классам и Typescript в целом оно никакого отношения не имеет:
function describe(obj) {
return Object.keys(obj).map(k => ({ field: k, value: obj[k], type: typeof obj[k] }));
}
Хочется сказать, что штука получилась интересная, но пока непонятно, что с ней делать дальше.Комментаторы выше уже сказали, почему на самом деле этот подход не получится применить ни для чего полезного. Поэтому — поставить на полочку, порадоваться и двигаться дальше.
+5
Я думаю, что эту задачу было бы эффективнее решить через плагин к ttypescript. Как, например, это сделано в typescript-is.
0
Ребят, с чего вообще начать нулевому айтишнику?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Разбираем классы по косточкам или интроспектируем типы в Typescript