Typescript с TypeLite - проверка типа во время выполнения

Допустим, у меня есть несколько C # DTO, и я хочу преобразовать их в интерфейсы TypeScript, используя шаблоны T4 и небольшую библиотеку под названиемTypeLite

На стороне клиента у меня есть несколько конкретных классов TypeScript (которые наследуются от Backbone.Model, но это не важно), которые представляют тот же DTO, определенный на стороне сервера.

Предполагаемая цель интерфейсов - действовать как контракты данных и обеспечивать синхронизацию клиентских и серверных DTO.

Однако это проблематично, поскольку TypeScript не поддерживает никаких средств проверки типов во время выполнения, кромеinstanceof, Проблема с экземпляром заключается в том, что когда я получаю свои DTO с сервера, они представляют собой простые объекты JSON, а не экземпляры моей модели. Мне нужно выполнить проверку типов во время выполнения для этих DTO, которые поступают с сервера в виде объектов JSON.

Я знаю, что могу сделать что-то вроде этого:

collection.fetch({...}).done((baseModels) => {
     baseModels.forEach((baseModel) => {
           if(baseModel&& baseModel.SomeProperty && baseModel.SomeOtherProperty){
                //JSON model has been "type-checked"
           }
     });
});

Тем не менее, есть очевидные проблемы с этим, потому что теперь мне нужно обновить втри места, если я изменю или добавлю собственность.

В настоящее время единственное, что я нашел, этоэто но он недокументирован, не поддерживается и использует узел, с которым у меня нет опыта, поэтому я избавлю себя от разочарования. Кто-нибудь знает что-нибудь подобное для выполнения проверки типов во время выполнения в TypeScript или каким-либо другим способом для достижения того, что я после?

Было бы здорово, если бы он был встроен в TypeLite для генерации интерфейсов, а также в схему JSON для проверки типов во время выполнения. Быть, что этот проектОткрытый исходный код кто-то действительно должен пойти дальше и расширить его. По крайней мере, мне понадобятся некоторые указатели, если я сделаю это сам (таким образом, вопрос).

Подробнее о моей конкретной проблемеВот (не обязательно, но при необходимости дополнительный контекст)

Ответы на вопрос(1)

Ваш ответ на вопрос