2015-11-21 5 views
6

क्यों इस मामले में:टाइपस्क्रिप्ट: eventTarget में tagName कैसे जांचें?

var ele = <HTMLDivElement>document.getElementById("toolbar"); 
    ele.addEventListener("click", function (e) { 
     if (e.target.tagName === "SPAN") { console.log(e.target.tagName) } }, false); 

दृश्य स्टूडियो मुझे इस त्रुटि से पता चलता?

बिल्ड: ऑपरेटर'== '' प्रकार 'HTMLElement' और 'स्ट्रिंग' पर लागू नहीं किया जा सकता है।

संपत्ति 'टैगनाम' प्रकार 'EventTarget' प्रकार पर मौजूद नहीं है।

जब मैं एक स्क्रिप्ट चलाता हूं तो ठीक काम करता है।

इसे ठीक से कैसे लिखें?

धन्यवाद।

उत्तर

13

मैं इस तरह उस कोड स्निपेट को समायोजित करेगा:

var ele = <HTMLDivElement>document.getElementById("toolbar"); 
    ele.addEventListener("click", (ev: MouseEvent) => { 
     var element = ev.target as HTMLElement;  
     if (element.tagName === "SPAN") { 
      console.log(element.tagName) 
     } 
    }, false); 

घटना कास्टिंग संपत्ति targetHTMLElement करने के लिए हमें अंतर्निहित तत्व के सभी उचित गुण दे देंगे।

the playground

+0

धन्यवाद प्रयास करें। बीटीडब्ल्यू क्या आप मुझे अच्छे टाइपस्क्रिप्ट ट्यूटोरियल की सिफारिश कर सकते हैं? – Klick

+0

मुझे यह देखने में खुशी हुई कि मदद मिली;) शुरुआती बिंदु बेसत और उसकी किताबें और वीडियो हो सकता है, उदा। यहां https://basarat.gitbooks.io/typescript/। यदि इससे थोड़ा सा मदद मिलती है, तो आप उत्तर स्वीकार कर सकते हैं;) –

1

दो बराबर संकेत में चेक यह (पूर्णांक == 'स्ट्रिंग') प्रकारों (जैसे 19 == '19') सच करने के लिए evals के बीच मूल्यों तुलना करती है।

3 बराबर संकेत मूल्यों और प्रकारों की तुलना करते समय होते हैं। तो आप स्ट्रिंग प्रकार की तुलना किसी HTML प्रकार से कर रहे हैं। इस प्रकार झूठी बराबर है। आप की तुलना करने के लिए एक स्ट्रिंग को टैगनाम तत्व दो बराबर संकेत

1

का उपयोग कोणीय में अगर टैगनाम संपत्ति लक्ष्य पर त्रुटि दे रहा है चाहते हैं, नीचे दिए गए कोड का उपयोग करने के

event.target['tagName'] 
+0

यह अच्छा है, क्योंकि प्रकार की सुरक्षा रास्ते में नहीं मिलती है और आप न केवल कोणीय में इसका उपयोग कर सकते हैं। लेकिन कोई प्रकार की सुरक्षा नहीं है, इसलिए @Radim उत्तर बेहतर है। – codeepic

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