2016-08-08 3 views
7

मैं टाइपस्क्रिप्ट के लिए बहुत नया हूं और मैं इसे बहुत प्यार करता हूं, खासकर जावास्क्रिप्ट में ओओपी करना कितना आसान है। हालांकि मैं कोण ब्रैकेट का उपयोग करने के लिए अर्थशास्त्र को समझने की कोशिश करने पर अटक गया हूं।कोण ब्रैकेट में वर्ग को घेरना क्या है "<>" टाइपस्क्रिप्ट में मतलब है?

उनके डॉक्स से, मैं की तरह

interface Counter { 
    (start: number): string; 
    interval: number; 
    reset(): void; 
} 

function getCounter(): Counter { 
    let counter = <Counter>function (start: number) { }; 
    counter.interval = 123; 
    counter.reset = function() { }; 
    return counter; 
} 

और

interface Square extends Shape, PenStroke { 
    sideLength: number; 
} 

let square = <Square>{}; 

मैं मुसीबत को समझ कर इस वास्तव में इसका मतलब है या जिस तरह से सोचने के लिए/इसे समझ कर रहा हूँ कई उदाहरण देखा है।

क्या कोई इसे मुझे समझा सकता है?

उत्तर

12

इसे Type Assertion या कास्टिंग कहा जाता है।

ये वही कर रहे हैं:

let square = <Square>{}; 
let square = {} as Square; 

उदाहरण:

interface Props { 
    x: number; 
    y: number; 
    name: string; 
} 

let a = {}; 
a.x = 3; // error: Property 'x' does not exist on type `{}` 

तो तुम कर सकते हैं:

let a = {} as Props; 
a.x = 3; 

या:

let a = <Props> {}; 
let a: Props = {}; 

वही

+0

जिज्ञासा से बाहर, इंटरफ़ेस परिभाषाओं में ऐसा करना संभव है? उदाहरण के लिए – davejoem

+0

मुझे यकीन नहीं है कि इसका मतलब क्या है, क्या आप अपना प्रश्न उदाहरण के साथ संपादित कर सकते हैं? –

+0

जिज्ञासा से बाहर, इंटरफ़ेस परिभाषाओं में ऐसा करना संभव है? उदाहरण के लिए: - 'इंटरफ़ेस व्यक्ति {नाम: स्ट्रिंग; आयु: संख्या;} इंटरफ़ेस कॉल {(व्यक्ति के रूप में व्यक्ति): बूलियन;} ' – davejoem

2

इसे Type Assertion कहा जाता है।

आप इसके बारे में Basarat's "TypeScript Deep Dive" में या official TypeScript handbook में पढ़ सकते हैं।

+0

धन्यवाद करेगा। जवाब खुद को पोस्ट करने वाला था। लेकिन एक फॉलो अप के रूप में, इंटरफेस का उपयोग करते समय फ़ंक्शन पैरामीटर में ऐसा करना संभव है? – davejoem

संबंधित मुद्दे