@leelusama
Junior Frontend developer

Как типизировать класс javascript на typescript?

interface IAnimal {
  name: string;
  say: () => string;
}
class Animal implements IAnimal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  say() {
    return `${this.name} says ${this.phrase}`;
  }
}


phrase принадлежит наследуемым от Animal классам. Как это в typescript описать?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
сделать phrase абстрактным полем/свойством и переопределять в потомках. Потомок сам может выбрать - сделать поле или свойство.

interface IAnimal {
    name: string;
    say: () => string;
}
abstract class Animal implements IAnimal {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    say() {
        return `${this.name} says ${this.phrase}`;
    }

    protected abstract phrase: string;
}

class Cat extends Animal {
    protected get phrase() { return 'm'; }
}

const c = new Cat('q');
console.log(c.say());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы