आपको टाइपस्क्रिप्ट को HTMLElement के प्रकार को स्पष्ट रूप से बताने की आवश्यकता है जो आपका लक्ष्य है।
इसे करने का तरीका एक सामान्य प्रकार का उपयोग करके इसे एक उचित प्रकार में डालना है:
this.countUpdate.emit((<HTMLTextAreaElement>e.target).value./*...*/)
या (आप की तरह)
this.countUpdate.emit((e.target as HTMLTextAreaElement).value./*...*/)
या (फिर, वरीयता की बात)
const target = e.target as HTMLTextAreaElement;
this.countUpdate.emit(target.value./*...*/)
इससे टाइपस्क्रिप्ट को पता चलेगा कि तत्व एक है textareaऔर उसे मूल्य संपत्ति का पता चल जाएगा।
ऐसा ही किसी भी प्रकार के HTML तत्व के साथ किया जा सकता है, जब भी आप टाइपस्क्रिप्ट को उनके प्रकारों के बारे में थोड़ी और जानकारी देते हैं तो यह आपको उचित संकेत और निश्चित रूप से कम त्रुटियों के साथ वापस भुगतान करता है।
भविष्य के लिए इसे आसान बनाने के लिए आप किसी घटना को सीधे उसके लक्ष्य के प्रकार के साथ परिभाषित कर सकते हैं:
// create a new type HTMLElementEvent that has a target of type you pass
// type T must be a HTMLElement (e.g. HTMLTextAreaElement extends HTMLElement)
type HTMLElementEvent<T extends HTMLElement> = Event & {
target: T;
// probably you might want to add the currentTarget as well
// currentTarget: T;
}
// use it instead of Event
let e: HTMLElementEvent<HTMLTextAreaElement>;
console.log(e.target.value);
// or in the context of the given example
emitWordCount(e: HTMLElementEvent<HTMLTextAreaElement>) {
this.countUpdate.emit(e.target.value);
}
<img [src]="url"> <br/> <input type='file' (change)="showImg($event)">घटक:... this.url = event.target.result;कभी-कभी काम करता है, जब यह गलत नहीं होता हैerror TS2339: Property 'result' does not exist on type 'EventTarget'जैसा कि आपने सुझाव दिया है कि TS को इसके बारे में अधिक बताएं, जिस स्थान परHTMLTextAreaElementमैंने कोशिश की थी,HTMLInputElementउसके बाद औरtarget.valueनहीं गलत लेकिन छवि प्रदर्शित नहीं हो रही है।