2013-02-10 23 views
5

मैं एक लाइब्रेरी के लिए घोषणा घोषणा कर रहा हूं जो अभी तक मौजूद नहीं है, लेकिन वहां कुछ कक्षाएं हैं जिनमें केवल पढ़ने योग्य विशेषताएं हैं। मैं इसे घोषणा में कैसे रख सकता हूं?मैं घोषणा फ़ाइल में एक पाठक विशेषता कैसे जोड़ सकता हूं?

उत्तर

5

आश्चर्यजनक रूप से, आप इंटरफेस पर या परिवेश घोषणाओं पर गेटर्स और सेटर्स निर्दिष्ट नहीं कर सकते हैं।

निकटतम आप प्राप्त कर सकते हैं

है:

interface Test { 
    Prop: number; 
} 

class Example implements Test { 
    private prop: number; 

    get Prop() :number { 
     return this.prop; 
    } 
} 

दुर्भाग्य से, यह एक सेटर अनुमति देने से कार्यान्वयन नहीं रोकता है और एक परिवेश घोषणा के संदर्भ में यह सेट करने का प्रयास से फोन करने वाले बंद नहीं होंगे महत्व।

+0

ओह, कि 'अभी तक मौजूद नहीं है' घोषणाओं को संदर्भित किया गया है, पुस्तकालय (वेब ​​ऑडियो एपीआई) नहीं;) – Eindbaas

+0

लेकिन उत्तर के लिए धन्यवाद, अगर कोई व्यक्ति <5 पर लक्षित किसी परियोजना में घोषणाओं का उपयोग करता है तो क्या होगा? – Eindbaas

+0

आप केवल ईसीएमएस्क्रिप्ट 5 और ऊपर के लिए टाइपस्क्रिप्ट में प्राप्त और सेट का उपयोग कर सकते हैं - मुझे लगता है कि यह प्रतिबंध परिभाषाओं पर भी लागू होगा। केवल पढ़ने की संपत्ति की अवधारणा मौजूद नहीं है। – Fenton

2

टाइपप्रति 2.0 के साथ अब आप, केवल पढ़ने के लिए गुण घोषणा कर सकते हैं, उदाहरण के लिए

interface Point { 
    readonly x: number; 
    readonly y: number; 
} 

var p1: Point = { x: 10, y: 20 }; 
p1.x = 5;       // Error, p1.x is read-only 

var p2 = { x: 1, y: 1 }; 
var p3: Point = p2;     // Ok, read-only alias for p2 
p3.x = 5;       // Error, p3.x is read-only 
p2.x = 5;       // Ok, but also changes p3.x because of aliasing 

अधिक जानकारी के लिए here देखते हैं।