TypeScript'e, hedefiniz olan HTMLElement'in türünü açıkça söylemeniz gerekir.
Bunu yapmanın yolu, onu uygun bir türe dönüştürmek için genel bir tür kullanmaktır:
this.countUpdate.emit((<HTMLTextAreaElement>e.target).value./*...*/)
veya (istediğiniz gibi)
this.countUpdate.emit((e.target as HTMLTextAreaElement).value./*...*/)
veya (yine tercih meselesi)
const target = e.target as HTMLTextAreaElement;
this.countUpdate.emit(target.value./*...*/)
Bu, TypeScript'in öğenin bir textareaolduğunu bilmesini ve değer özelliğini bilmesini sağlar.
Aynı şey herhangi bir HTML öğesi için de yapılabilir, TypeScript'e türleri hakkında biraz daha fazla bilgi verdiğinizde, size uygun ipuçları ve elbette daha az hata ile geri ödeme yapar.
Geleceği kolaylaştırmak için, bir olayı hedefinin türüyle doğrudan tanımlamak isteyebilirsiniz:
// 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)">Bileşen:... this.url = event.target.result;Bazen öyle değil err olduğunu ne zaman, gelmez bazen çalışırerror TS2339: Property 'result' does not exist on type 'EventTarget'yerinde, bu konuda daha fazla söyle TS önerildiği gibiHTMLTextAreaElementdenedimHTMLInputElementsonratarget.valueartık hata ama görüntü gösterilmiyor.