ค้นหาเว็บไซต์

สามารถใช้คุณสมบัติแบบอ่านอย่างเดียวในอินเทอร์เฟซของ 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;
}

บทความที่เกี่ยวข้อง