สามารถใช้คุณสมบัติแบบอ่านอย่างเดียวในอินเทอร์เฟซของ TypeScript ได้หรือไม่?
ฉันต้องการกำหนดอินเทอร์เฟซที่มีพร็อพเพอร์ตีแบบอ่านอย่างเดียว ตัวอย่างเช่น (เป็นเพียงแนวคิดเบื้องต้น);
interface foo {
get bar():bool;
}
อย่างไรก็ตาม นี่ทำให้เกิดข้อผิดพลาดของไวยากรณ์, "คาดว่า ';'" บน bar. ฉันได้ตั้งค่า VisualStudio ของฉันให้ใช้เป้าหมาย ES5 ดังนั้น getters จึงรองรับ แล้วฉันจะกำหนด property แบบอ่านอย่างเดียวใน interface อย่างไร?
คำตอบ #1
คุณสมบัติแบบ getter-only ถูกแนะนำใน Typescript 2.0:
interface foo {
readonly bar: boolean;
}
คำตอบ #2
ใช่ นี่คือข้อจำกัดของอินเตอร์เฟซ ไม่ว่าการเข้าถึงคุณสมบัตินั้นจะถูกนำไปใช้ด้วย getter หรือไม่ก็ถือเป็นรายละเอียดของการนำไปใช้ ดังนั้นจึงไม่ควรเป็นส่วนหนึ่งของอินเตอร์เฟซสาธารณะ ดูคำถามนี้ด้วย
ถ้าคุณต้องการระบุแอตทริบิวต์ที่อ่านอย่างเดียวในอินเทอร์เฟซ คุณสามารถเพิ่มเมธอด getter ได้:
interface foo {
getAttribute() : string;
}
