Получить доступные свойства интерфейса без инициализации - PullRequest
2 голосов
/ 28 января 2020

Я пытаюсь создать универсальный c метод "отображения", который может принимать интерфейс и JSON ответ, а затем сопоставляет доступные ключи с интерфейсом. У меня проблема в том, что нет способа получить доступные свойства интерфейса без их инициализации.

Есть ли способ получить значение интерфейса без его определения?

Ответы [ 3 ]

0 голосов
/ 29 января 2020

interface и types в машинописи проверяются только при компиляции (от ts до js). Таким образом, во время выполнения (которое запускает js) информация об интерфейсе отсутствует.

Но вы можете реализовать это с использованием class и reflect-metadata и decorators, как class-transformer до.

0 голосов
/ 31 января 2020

Простое переключение моих интерфейсов в класс было решением. Затем я могу создать пустой экземпляр и перечислить все доступные свойства.

0 голосов
/ 28 января 2020

Интерфейсы и другая информация о типах (за исключением) недоступны во время выполнения.

Однако вы можете определить метод, который десериализует строку JSON в заданный тип. const myThing: IThing = JSON.parse(myJsonString); приведёт его к типу IThing.

Если у вас есть класс Thing, который реализует IThing, вы можете использовать Object.keys для перебора ключей экземпляра Thing и сопоставьте ключевые индексы вместе, как thing[key] = JSON.parse(...)[key]

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