2012-10-11 3 views
26

나는 읽기 전용 속성을 가진 인터페이스를 정의하고 싶습니다. 예를 들면;TypeScript 인터페이스에서 getters/setter를 사용할 수 있습니까?

그러나 술집에 구문 오류 "예상 ';' '이 표시됩니다. Visual Studio에서 ES5 대상을 사용하도록 설정 했으므로 getters가 지원됩니다. 이것은 인터페이스의 한계입니까? 미래에 이러한 변화가 일어날 수 있습니다. 할 수있는 것은 아주 좋은 일입니다.

+2

HTTP 참조 : // 유래를 당신이 인터페이스에 지정된 읽기 전용 속성을해야하는 경우

, 당신은 getter 메소드를 추가 할 수 있습니다 .com/questions/12838248/is-it-possible-to-use-getters-setters-in-interface-definition –

+2

예, 이것은 인터페이스의 제한 사항입니다. [이 질문] [1]도보십시오. [1] : http://stackoverflow.com/questions/12838248/is-it-possible-to-use-getters-setters-in-interface-definition – Valentin

답변

16

예, 이것은 인터페이스의 제한 사항입니다. 속성에 대한 액세스가 getter로 구현되는지 여부는 구현 세부 사항이므로 public 인터페이스의 일부가 아니어야합니다. this question도 참조하십시오.

interface foo { 
    getAttribute() : string; 
} 
+8

불행하게도, 구현 세부 즉 아니다 은 (는) 읽기 전용입니다. 나는 Typescript에서 그것을 표현할 수 있었으면 좋겠습니다. – Ezward

+0

나는 본다. 그렇다면 귀하의 유일한 방법은 getter 메소드를 지정하는 것입니다. 그에 따라 내 대답을 업데이트했습니다. – Valentin

+2

아마도 이것은 TypeScript 2.0에서 가능해질 것입니다 : https://github.com/Microsoft/TypeScript/pull/6532 –

24

게터 전용 속성이 Typescript 2.0에서 소개 :

interface foo { 
    readonly bar: boolean; 
} 
+1

제가 실수하지 않는다면, 이것은 여전히 ​​'bar'를 getter가 아닌 속성으로 선언합니다. –

+1

@AlexanderAbakumov 읽기 전용은 속성이어야한다는 것을 지정하지 않습니다. 속성은 getter와 동일한 방식으로 참조되므로이 인터페이스를 구현하는 클래스는 속성이나 getter를 자유롭게 사용할 수 있습니다. – nikeee

+0

@nikeee : 예,하지만 OP에서는 getter/setters를 인터페이스가 아닌 속성으로 사용할 수 있는지 묻습니다. –

관련 문제