Как требовать членов интерфейса для данных ответа? - PullRequest
0 голосов
/ 26 мая 2020

В приведенном ниже коде (он прекрасно компилируется) я ожидал, что любые данные ответа, не соответствующие интерфейсу IStory, вызовут ошибку. Однако это не так, и все данные переводятся в обычное состояние. Но определенно нет свойства thisPropertyDoesNotExist ни для одного из объектов ответа. Почему здесь не требуется интерфейс? Как бы этот стандарт был реализован? 1005 *

1 Ответ

1 голос
/ 26 мая 2020

Конечная цель состоит в том, чтобы данные ответа содержали по крайней мере данные, определенные в интерфейсе (мне действительно интересно проверить, отсутствуют ли URL-адреса).

Интерфейсы для Объекты json - это просто ваши обещания (не проверенные во время выполнения), что данные будут соответствовать тому, что вы говорите. TypeScript не существует во время выполнения (его просто JavaScript), и вы не можете использовать интерфейсы во время выполнения.

Решение

Однако вы можете написать JavaScript код проверки, который * возвращает тип в TypeScript * Гарантирует соответствие объекта типу

Пример такой библиотеки: https://github.com/pelotom/runtypes

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