我想用readonly屬性定義一個接口。例如;是否可以在TypeScript接口中使用getter/setters?
interface foo {
get bar():bool;
}
但是,這給出了語法錯誤,「預期」;'「吧。我已將VisualStudio設置爲使用ES5目標,因此支持getter。這是接口的限制嗎?未來可能會發生這種變化;能夠做到這是一件非常美好的事情。
我想用readonly屬性定義一個接口。例如;是否可以在TypeScript接口中使用getter/setters?
interface foo {
get bar():bool;
}
但是,這給出了語法錯誤,「預期」;'「吧。我已將VisualStudio設置爲使用ES5目標,因此支持getter。這是接口的限制嗎?未來可能會發生這種變化;能夠做到這是一件非常美好的事情。
是的,這是接口的限制。使用getter實現對屬性的訪問是否是實現細節,因此不應該成爲公共接口的一部分。另請參閱this question。
如果你需要在一個界面中指定的只讀屬性,你可以添加一個getter方法:
interface foo {
getAttribute() : string;
}
唯一吸氣劑性能在Typescript 2.0介紹:
interface foo {
readonly bar: boolean;
}
如果我沒有弄錯,這仍然聲明'bar'作爲屬性,而不是吸氣。 –
@AlexanderAbakumov readonly沒有指定它必須是一個屬性。由於屬性的引用方式與getter相同,實現此接口的類可以自由使用屬性或getter。 – nikeee
@nikeee:是的,但OP問我們是否可以在接口中使用getter/setter,而不是屬性。 –
請訪問http://計算器.com/questions/12838248/is-it-it-it-it-use-getters-setters-in-interface-definition –
是的,這是接口的限制。另見[這個問題] [1]。 [1]:http://stackoverflow.com/questions/12838248/is-it-possible-to-use-getters-setters-in-interface-definition – Valentin