Maszynopis z TypeLite - Sprawdzanie typu uruchomienia
Powiedzmy, że mam trochę C # DTO i chcę je przekonwertować na interfejsy TypeScript przy użyciu szablonów T4 i zgrabnej małej biblioteki o nazwieTypeLite
Po stronie klienta mam pewne konkretne klasy TypeScript (które dziedziczą po Backbone.Model, ale to nie jest ważne), które reprezentują to samo DTO zdefiniowane po stronie serwera.
Zamierzonym celem interfejsów jest działanie jako umowa na dane i zapewnienie synchronizacji DTO klienta i serwera.
Jest to jednak problematyczne, ponieważ TypeScript nie obsługuje innych funkcji sprawdzania typu czasu wykonywania niżinstanceof
. Problem z instancją polega na tym, że gdy ściągam swoje DTO z serwera, są to zwykłe obiekty JSON, a nie instancje mojego modelu. Muszę wykonać sprawdzanie typu run-time na tych DTO, które przychodzą z serwera jako obiekty JSON.
Wiem, że mogę zrobić coś takiego:
collection.fetch({...}).done((baseModels) => {
baseModels.forEach((baseModel) => {
if(baseModel&& baseModel.SomeProperty && baseModel.SomeOtherProperty){
//JSON model has been "type-checked"
}
});
});
Istnieją jednak oczywiste problemy, ponieważ teraz muszę zaktualizowaćtrzy miejsca, jeśli zmienię lub dodaję nieruchomość.
Obecnie jedyne, co znalazłem, toto ale to nieudokumentowane, nie utrzymywane i używa węzła, z którym nie mam żadnego doświadczenia, więc oszczędzę sobie frustracji. Czy ktoś wie o czymś podobnym do wykonywania sprawdzania typu w czasie wykonywania w TypeScript lub w inny sposób, aby osiągnąć to, czego szukam?
Byłoby wspaniale, gdyby był wbudowany w TypeLite do generowania interfejsów, a także schemat JSON do sprawdzania typu w czasie wykonywania. Będąc tym projektemotwarte źródło ktoś powinien naprawdę iść dalej i go rozszerzyć. Potrzebowałbym przynajmniej wskazówek, jeśli sam bym to zrobił (a więc pytanie).
Więcej szczegółów na temat mojego szczególnego problemututaj (nie jest konieczne, ale w razie potrzeby dodatkowy kontekst)