האם אפשר להשתמש בתכונה לקריאה בלבד בממשקי TypeScript?


אני רוצה להגדיר ממשק עם תכונה לקריאה בלבד. לדוגמה (כתפיסת בסיס);

interface foo {
    get bar():bool;
}

עם זאת, זה נותן את שגיאת הסינטקס, "ציפו ל-';'" על bar. הגדרתי את VisualStudio שלי להשתמש ביעד ES5, כך שה-getters נתמכים. כיצד הייתי מגדיר תכונה לקריאה בלבד בממשק?

תשובה #1

תכונות הניתנות לקריאה בלבד הוצגו ב-TypeScript 2.0:

interface foo {
    readonly bar: boolean;
}

תשובה #2

כן, זו מגבלה של ממשקים. בין אם הגישה לנכס מיושמת באמצעות getter או לא היא פרט של יישום ולכן אינה אמורה להיות חלק מהממשק הציבורי. ראה גם את השאלה הזו.

אם אתם צריכים מאפיין לקריאה בלבד המוגדר בממשק, תוכלו להוסיף שיטת getter:

interface foo {
    getAttribute() : string;
}