pandadevelop
@pandadevelop

Почему typescript не кидает exception на неправильное унаследование интерфейса?

export interface Response {
  success: boolean;
  error: string;
  data: {
    token: string;
    user: object;
  };
}

this.http.post<Response>(`${environment.api}/some-route`, {})
      .subscribe((response: Response) => {
        console.log(response)
      })


С бэка мне прилетает response, который совершенно не соответствует интерфейсу.
Но вот вопрос почему он не ругается на неправильный response? В консоли тишина.
Могу с бэка отослать что угодно и тайпскрипт ругаться не будет, хотя как мне казалось интерфейсы для того и нужны чтоб все это дело "типизировать". Как минимум ругаться на обязательные данные в Response.
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
Lynn
@Lynn
nginx, js, css
В каждом первом учебнике по TS где-то в самом начале написано что TS не существует в рантайме, так что там он уже ничего проверить не может.

Посмотрите на io-ts и аналогичные библиотеки для рантайм валидации

https://gcanti.github.io/io-ts/
Ответ написан
yarkov
@yarkov
Помог ответ? Отметь решением.
С бэка мне прилетает response, который совершенно не соответствует интерфейсу

Typescript закончился на этапе компиляции. В рантайме его нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы