Подтвердить что ты не робот

Можно ли использовать геттеры/сеттеры в интерфейсах TypeScript?

Я хотел бы определить интерфейс с свойством readonly. Например,

interface foo {
    get bar():bool;
}

Однако это дает синтаксическую ошибку, "ожидаемый"; "" на панели. Я установил свой VisualStudio для использования целевой ES5, поэтому получатели поддерживаются. Это ограничение интерфейсов? Мог бы это изменение в будущем; это очень хорошая вещь, чтобы иметь возможность делать.

4b9b3361

Ответ 1

Да, это ограничение интерфейсов. Независимо от того, реализован ли доступ к свойству с помощью геттера, деталь реализации и, следовательно, не должна быть частью открытого интерфейса. См. Также этот вопрос.

Если вам нужен атрибут readonly, указанный в интерфейсе, вы можете добавить метод getter:

interface foo {
    getAttribute() : string;
}

Ответ 2

Свойства Getter-only были введены в Typescript 2.0:

interface foo {
    readonly bar: boolean;
}