TypeScript에 타겟 인 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./*...*/)
그러면 TypeScript가 요소가 a textarea
라는 것을 알게되고 value 속성을 알게됩니다.
TypeScript에 유형에 대한 정보를 조금 더 제공 할 때마다 모든 종류의 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;
언젠가는 그렇지 ERR입니다 때,하지 않는 때로는 작동하지 않습니다error TS2339: Property 'result' does not exist on type 'EventTarget'
당신이 장소에 대해 더 자세히 설명해 TS를 제안한 것처럼HTMLTextAreaElement
내가 시도HTMLInputElement
후target.value
더 이상 오류이지만 이미지가 표시되지 않습니다.