Можно ли использовать геттеры/сеттеры в интерфейсах TypeScript?
Я хотел бы определить интерфейс с свойством readonly. Например,
interface foo {
get bar():bool;
}
Однако это дает синтаксическую ошибку, "ожидаемый"; "" на панели. Я установил свой VisualStudio для использования целевой ES5, поэтому получатели поддерживаются. Это ограничение интерфейсов? Мог бы это изменение в будущем; это очень хорошая вещь, чтобы иметь возможность делать.
Ответы
Ответ 1
Да, это ограничение интерфейсов. Независимо от того, реализован ли доступ к свойству с помощью геттера, деталь реализации и, следовательно, не должна быть частью открытого интерфейса. См. Также этот вопрос.
Если вам нужен атрибут readonly, указанный в интерфейсе, вы можете добавить метод getter:
interface foo {
getAttribute() : string;
}
Ответ 2
Свойства Getter-only были введены в Typescript 2.0:
interface foo {
readonly bar: boolean;
}