@Malkolm163

Как в Typescript в интерфейсе правильно указать тип?

есть такие классы/интерфейсы

interface A{
  name: string;
  service: ????? // вот тут надо указать как то любой класс реализующий интерфейс B
}
interface B{
  getData();
}

class C implements B{
  getData(){}
}
class D{
  ...
  private item: A = {
    name: 'name',
    service: new C()
  };
  ...
}


если указать вот так
interface A{
  name: string;
  service:  B
}

то получается ошибка, что С не является экземпляром B
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT
Front-end разработчик
У вас корректный код. В интерфейсе A в поле service ожидается объект класса, который имеет предка B. Все должно работать без приведений типов https://jsfiddle.net/hybt1qjz/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Cr2ed
приведение типов должно помочь
private item: A = {
    name: 'name',
    service: <B>new C()
  };
Ответ написан
Комментировать
profesor08
@profesor08
Ты в service пихаешь инстанс класса C, значит и ее тип должен быть соответствующим.

interface A{
  name: string;
  service: C;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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