2012-10-11 82 views
26

我想用readonly屬性定義一個接口。例如;是否可以在TypeScript接口中使用getter/setters?

interface foo { 
    get bar():bool; 
} 

但是,這給出了語法錯誤,「預期」;'「吧。我已將VisualStudio設置爲使用ES5目標,因此支持getter。這是接口的限制嗎?未來可能會發生這種變化;能夠做到這是一件非常美好的事情。

+2

請訪問http://計算器.com/questions/12838248/is-it-it-it-it-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實現對屬性的訪問是否是實現細節,因此不應該成爲公共接口的一部分。另請參閱this question

如果你需要在一個界面中指定的只讀屬性,你可以添加一個getter方法:

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'作爲屬性,而不是吸氣。 –

+1

@AlexanderAbakumov readonly沒有指定它必須是一個屬性。由於屬性的引用方式與getter相同,實現此接口的類可以自由使用屬性或getter。 – nikeee

+0

@nikeee:是的,但OP問我們是否可以在接口中使用getter/setter,而不是屬性。 –

相關問題