lib.d.ts์ Event ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ๋ฆฌ์ค๋๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์ฝ๋ฐฑ์ Event ์ ํ์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ Event์ currentTarget ์์ฑ์ EventTarget ์ ํ์ ๋๋ค (๋ฐ๋ฉด Element / HTMLElement ์ ํ์ด์ด์ผ ํจ).
XMLHttpRequest ๊ฐ์ฒด๋ currentTarget ์ผ ์ ์์ง๋ง Element / HTMLElement๋ ์๋๋๋ค. ๊ทธ๊ฒ ์ด์ ์ผ ์๋ ์์ต๋๋ค. ์ ๋ค๋ฆญ ์ ํ์ด ์ด๊ฒ์ ๊ฐ์ ํ ๊น์?
interface Event<T extends EventTarget> {
/* ... */
currentTarget: T;
/* ... */
}
interface EventListener<T extends EventTarget> {
(evt: Event<T>): void;
}
interface HTMLElement {
/* ... */
addEventListener(type: string, listener: EventListener<HTMLElement>, useCapture?: boolean): void;
}
๊ทธ๊ฒ์ ๊ฐ์ ํ๋ ๋ฐ ๋จผ ๊ธธ์ ๊ฐ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด iPhone์์ ๋ณด๋
2014 ๋ 8 ์ 3 ์ผ 13:34์ SaschaNaz [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
XMLHttpRequest ๊ฐ์ฒด๋ currentTarget ์ผ ์ ์์ง๋ง Element / HTMLElement๋ ์๋๋๋ค. ๊ทธ๊ฒ ์ด์ ์ผ ์๋ ์์ต๋๋ค. ์ ๋ค๋ฆญ ์ ํ์ด ์ด๊ฒ์ ๊ฐ์ ํ ๊น์?
์ธํฐํ์ด์ค ์ด๋ฒคํธ
{
/ * ... _ /
currentTarget : T;
/ _ ... * /
}์ธํฐํ์ด์ค EventListener
{
(evt : ์ด๋ฒคํธ) : ๋ฌดํจ;
}interface HTMLElement {
/ * ... * /
addEventListener (์ ํ : ๋ฌธ์์ด, ๋ฆฌ์ค๋ : EventListener, useCapture ?: ๋ถ์ธ) : void;
}
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
๋ชจ๋ ์ด๋ฒคํธ ๋์์ด Element
(http://www.w3.org/TR/DOM-Level-3-Events/#event-types)๊ฐ ์๋๋ฏ๋ก ์ฌ๊ธฐ์์๋ ์๋ฃจ์
์ ๋ ๋ง์ ๊ฒ์ด์ด์ผํฉ๋๋ค. @SaschaNaz ์ ์ ์์ ๋ฐ๋ผ.
๋ฌธ์ ๋ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๊ณต๊ฐ ํ ์์๋ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ lib.d.ts๋ฅผ ์์ฑํ๊ณ ์์ผ๋ฉฐ ํด๋น ํ์ผ์ด ์ ํ์ผ์ ์ํด ์ฌ์ฉ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ํ์ง ์์ ๊ฒ์ด์ง๋ง, ์์ผ๋ก lib.d.ts ์์ฑ ์คํฌ๋ฆฝํธ / ์ ๋ ฅ์ ๋ํ PR์ ์ํ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ง๊ธ์ 'Revisit'ํ๊ทธ ์ง์ -ํ ๋ฌ ์์์ด ๋ฌธ์ ์ ๋ํด ํ์ ๋ณด๋ด ์ฃผ์๋ฉด ํ์ฌ ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
ํ์ฌ ์ ํ์ ์ฐธ์กฐํ๋ ๊ตฌ๋ฌธ์ด ์์ต๋๊น? ์ด๋ฐ ์ข ๋ฅ์ ์ผ์ ํ ์ ์๋ค๋ฉด ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
interface HTMLElement {
addEventListener(type: string, listener: EventListener<this>, useCapture?: boolean): void;
}
var image: HTMLImageElement;
var video: HTMLVideoElement;
image.addEventListener // receives EventListener<HTMLImageElement> type
video.addEventListener // receives EventListener<HTMLVideoElement> type
๊ทธ ๊ธฐ๋ฅ์ ์กด์ฌํ์ง ์์ต๋๋ค. # 285์ # 229์์ ์ ์ํ ๊ฒ๊ณผ ๋น์ทํ ๊ฒ์ ๋๋ค.
์๋
ํ์ธ์,์ด ์ค๋ ๋๋ฅผ ํํฉ๋๋ค. Event.target
์ผ๋ก์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ๊ฒ์ด HTMLElement
ํฉ๋๋ค. ๊ธฐ๋ณธ ์ ํ์ด ๊ทธ๋ ์ง ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์ฝ๊ฐ ์ด์ํฉ๋๋ค. @SaschaNaz ์ ์ ์์ ์๋ํ๊ณ "์ค๋ณต ์๋ณ์"๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค (์ฃ์กํฉ๋๋ค. ๋ญ๊ฐ ๋๋ฝ๋์์ ์ ์์ต๋๋ค. TypeScript๋ฅผ ์ฒ์ ์ฌ์ฉํ์ต๋๋ค).
ํธ์ง : ์ด๊ฒ์ ๊ฒฝ๊ณ ๋ฅผ ์กฐ์ฉํํ๊ธฐ ์ํด ์ผํ์ต๋๋ค : (<HTMLElement>event.target).tagName
@rayshan ์ ์์ lib.d.ts
ํ์ผ์ ๋ค์ด๊ฐ์ผ ํ ํญ๋ชฉ์ ๋ํ ๊ฒ์ด ์์ผ๋ฉฐ ํ์ผ์ Internet Explorer ๊ตฌํ์ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ์๋ ์์ฑ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ํ ์ค๋ฅ๋ ์ ํํฉ๋๋ค. ํ์ฌ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ด์ฅ lib ( --noLib
)์์ด ๋น๋ํ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฑฐ๋ ์ํ ํ ์์
์ ์ํํ๋ ๊ฒ์
๋๋ค. ํ์ฌ TypeScript์์ DOM์ ๋ฐํ ์ ํ์ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค (๋๋ถ๋ถ DOM์ด ๊ฐ์ฅ ์ผ๊ด๋ / ๊ตฌ์กฐํ / ์ ํ ์์ / ์ผ๊ด๋๊ฒ ๊ตฌํ ๋ API ์งํฉ์ด ์๋๊ธฐ ๋๋ฌธ์).
์ด์ # 4910์ด ๋ณํฉ๋์์ผ๋ฏ๋ก ๋ค์ ๊ฒํ ํ ์ ์์ต๋๊น?
@zhengbli ์๋ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ์์ฑ์ด ํ์ํ lib.d.ts ๋ฌธ์ ์ ์ํ์ ๋ํ ์ปจํ ์คํธ๊ฐ์์ ์ ์์ต๋๋ค.
PR์ ํ์ํ์ต๋๋ค. ๋ค์์ lib.d.ts ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ ๋ณด์ ๋๋ค. https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md#contributing -libdts-fixes
JS FileReader onload
TS2339: Property 'result' does not exist on type 'EventTarget'
์์ onerror
์ ๋ฌ ๋ ์ด๋ฒคํธ์์ getSummary()
์ ๋ํ ๋ ๋ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋์ฐํ ๋นจ๊ฐ์ ๊ตฌ๋ถ ๊ตฌ๋ถ ํ ์ ์ ์ต์ ํ๋ ๊ฒ์ ๋๋ค .-)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
interface FileReaderEventTarget extends EventTarget {
result:string
}
interface FileReaderEvent extends Event {
target: FileReaderEventTarget;
getMessage():string;
}
๊ทธ๋ฐ ๋ค์ ๋ด ์ฑ์์ :
reader.onload = function(fre:FileReaderEvent) {
var data = JSON.parse(fre.target.result);
...
}
์์ฑ ๋ JS ์ฝ๋๋ ์ข์ ๋ณด์ด๊ณ ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค. ๋น์ ์์ ์ธ JS ์ด๋ฒคํธ ์ ํ์ ๋ํด ์ด๋ฌํ ์ข ๋ฅ์ ์๋ฃจ์ ์ lib.d.ts์ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
๋ด ์๋ฃจ์ ์ด ์ง๋์น๊ฒ ๋จ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฅผ ์๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ณด๋ ๊ฒ์ฒ๋ผ currentTarget์ ๋ํ ์ ์ผํ ์ฐธ์กฐ๋ TSJS ์์ฑ๊ธฐ์์ ์์ฑ ๋ webworker.generated.d.ts ํ์ผ ์์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๊ณ ์น๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅธ๋ค ๐
๋๊ตฐ๊ฐ๊ฐ ๊ฑฐ์ 3 ๋
๋์ด ๋ฌธ์ ๋ฅผ ๊ณ ์น ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ TypeScript๊ฐ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๊ณ ์ ๋ง ์ฌํ๋ค๋ ์ฌ๋๋ค์ ๋ง์ ์์ฃผ ๋ฃ๋ ์ด์ ์ผ ์ ์์ต๋๋ค.
์. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์์ํ์ต๋๋ค. PR https://github.com/Microsoft/TSJS-lib-generator/pull/202๋ฅผ ๋ง๋ญ๋๋ค.
๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ต๋๋ค.
๋๋ Property 'getBoundingClientRect' does not exist on type 'EventTarget'.
๋ฐ๊ณ ์์ต๋๋ค. ์ข์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์, PR์ ๊ฑฐ์ 2 ๊ฐ์ ์ดํ๋ก ๋ณด๋ฅ ์ค์ ๋๋ค. ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ํ ์์๋ ์ผ์ด ์์ผ๋ฉด ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
currentTarget
๋ฅผ ์ ๋ค๋ฆญ์ผ๋ก ๋ง๋ค ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด HTMLInputElement.onchange
๋ (event: Event<HTMLInputElement>) => void
์ ํ์ด ๋ ์ ์์ผ๋ฏ๋ก event.currentTarget.value
๋ ์บ์คํธ์์ด ์๋ํฉ๋๋ค. ๋๋ ์ฃผ์์ ์
๋ ฅํ์ญ์์ค. React์ ํ์ดํ์์ด ์์
์ ์ํํ์ง๋ง dom.lib.d.ts๋ ์ํ๊น๊ฒ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ ๋ค๋ฆญ์ ๋์ ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ๋ฏ๋ก ์ ๋ค๋ฆญ์ผ๋ก ์ธํ ์ฑ๋ฅ ๋ฌธ์ ๋ก ์ธํด ์ฐจ๋จ๋ฉ๋๋ค .๐ญ
์ด๋ฌํ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ React ์ ํ์ ๋๊ฐ์ด ์ ์ฉ๋ฉ๋๊น?
lib.d.ts์๋ React ํ์ดํ์ด ํฌํจ๋์ด ์์ง ์์ง๋ง ๋ช
๋ น์ --diagnostics
๋ฅผ ์ถ๊ฐํ์ฌ ํ
์คํธ ํ ์ ์์ต๋๋ค.
@felixfbecker ๊ฐ์ธ์ ์ผ๋ก ์ด๊ฒ์ด ๊ณง ์์ ๋ ๊ฒ์ด๋ผ๊ณ ์์ฌํฉ๋๋ค. ๋๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ด๋ฏธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ง๋ค์๊ฑฐ๋ TypeScript๋ฅผ ํฌ๊ธฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์์ด ๋ฌธ์ ๋ฅผ ๊ฒช๋ ์ฌ๋์ด ๋๋ฌด ์ ์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๋ฒ์ 1.18.0 (1.18.0)์ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค.
์๋ ํ์ธ์,
...์ ๊ฐ์ ๋ฌธ์ ์ด๋ฉฐ ์์ง ํด๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
angular 4 ํ๋ก์ ํธ๋ฅผ ํ๋ก๋์ ์ ํ์ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ํ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ng serve ..๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ๊ฐ๋๊ฐ ํ๋ก๋์ ํ์ผ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จ๋ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์ง์ ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. Typescript๋ก dom์ ์กฐ์ํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค.
์ด ๋ฌธ์ ๋ 4 ๋ ์ ์ด๊ณ ํด๋น PR์ ๊ฑฐ์ 1 ๋ ์ด ์ง๋๋ฉด์ด ๋ฌธ์ ๊ฐ ๊ณง ์์ ๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ 4 ๋ ๋์ ๋ฐ์ํ์ง๋ง ์์ง ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
https://github.com/Microsoft/TSJS-lib-generator/pull/207 ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ฌํญ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ @saschanaz ๋ ์ฑ๋ฅ์ ๋ฐ๋ผ ์ฐจ๋จ๋ฉ๋๋ค.
11์์ Casting party tonite-๋ธ๋ผ์ฐ์ ํญ ์ธ๋ก๋ :
confirmationMessage(event: BeforeUnloadEvent): any {
const activeElement: HTMLElement = <HTMLElement>(<Document>event.target).activeElement;
: ๋์ฑ ๋งจ :
์ถ๊ฐ๋ ์ด๋จ๊น์
readonly currentTarget: Element | null;
readonly target: Element | null;
UIEvent
์๋ง? ์ด๊ฒ์ ๊ทธ๋ค์ง ๊ตฌ์ฒด์ ์ด์ง ์์ง๋ง ๋๋ถ๋ถ์ ์ฝ๋๋ฅผ ํ๋ณตํ๊ฒ ๋ง๋ญ๋๋ค.
UIEvent์์์ ๊ฐ์ด | null
์์ด๋ ๋ ๋ค ํญ์ ์ค์ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ . Typescript์ ํจ๊ป Vue๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๊ณ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ ํ๋๋ก ์ ๋ ฅ ํ๋์ ๊ฐ์ ์ป๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฌ๋ event.target.value๋ ์ ํ ๊ฒ์ฌ๊ธฐ๋ฅผ ํต๊ณผํ์ง ๋ชปํ์ง๋ง-์ ์๊ฐ์๋ ํ ์คํธ ์ ๋ ฅ์ด ํญ์ ์ด๋ฌํ ์ด๋ฒคํธ์ ๋ํด ์ด๋ฌํ ํ๋๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
์ฝ๋์ ์ ํ any๋ฅผ ์ถ๊ฐํ์ฌ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
this.url = (<any>event).target.result;
Event ๋ฐ EventTarget์ ์ ๋ ฅํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
interface Event<C = any, S = any, T = any> {
...
currentTarget: EventTarget<C> | null;
srcElement: EventTarget<S> | null;
target: EventTarget<T> | null;
...
}
interface EventTarget<T = any> {
...
}
FileReader๋ฅผ ์ฌ์ฉํ๋ ๋์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์ ํ์ผ๋ก ๊ฐ๋จํ๊ฒ ์บ์คํธํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
const fileReader = new FileReader();
fileReader.onload = $ev => {
console.log($ev); // type ProgressEvent
console.log($ev.target); // type FileReader
// console.log($ev.target.result); // editor and autocomplete doesn't show any error
console.log(($ev.target as FileReader).result); // casting compiles fine
};
fileReader.readAsText(file);
์ด ์ฃผ์ ์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋งค๋ฒ event.target
๋๋ any-casting ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ๋ก ์บ์คํ
ํ์ง ์๊ณ ( @gautamkrishnar ๊ฐ ์์์ ํ ๊ฒ์ฒ๋ผ)
์ฌ์ค, 6 ๋ฒ์งธ ์์ผ์ด๋๊ธฐ ์ ์์ด ๋ฌธ์ ์ ๋ํ ๊ณต์์ ์ธ ๋ต๋ณ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ค, ์ด๊ฒ์ ์๋ง๋ DOM, JSX ๋ฑ์ผ๋ก ์์ ํ ๋ ํ๋ฃจ ๋์ ๊ฐ์ฅ ๊ท์ฐฎ์ ์ผ์ ๋๋ค.
์ฌ์ค, ๊ทธ๊ฒ์ ๋ด๊ฐ ๊ฐ์ง ์ ์ผํ ์ผ์ผ ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ํ๋ฃจ ์ข ์ผ ๋ฐฑ๋ง ๋ช ์ ์ฌ๋๋ค์ด ์ด๊ฒ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์์ํฉ๋๋ค.
์ด๊ฒ์ด ์ ์ฐ์ ์์๊ฐ ์๋์ง ์ดํดํ๋ ๊ฒ์ ์ ๋ง ์ด๋ ต์ต๋๋ค.
event.target๊ณผ ๋์ผํฉ๋๋ค. ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ ์์์ด ์์ง ์กด์ฌํ์ง ์๊ณ ์์์ด ๋ง์ ๋ ๋ถ๋ชจ ์์์ ํด๋ฆญ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. event.target.tagName ๋๋ classList์ ๋ํ ๊ฐ๋จํ ํ ์คํธ๋ ์ ๊ฐํ๋ ์ผ๋ฐ์ ์ธ ์ผ์ ๋๋ค. ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค .... ์๋ ๋์ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ต๋๋ค. EventTarget์ด HTMLElement๋ก ๋ถ๋ฅ๋์ง ์์๊ธฐ ๋๋ฌธ์ tagName / classList์ ๋ํ ์ ๋ณด๋ ์ป์ง ๋ชปํ์ง๋ง ์๋ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
JS FileReader
onload
TS2339: Property 'result' does not exist on type 'EventTarget'
์์onerror
์ ๋ฌ ๋ ์ด๋ฒคํธ์์getSummary()
์ ๋ํ ๋ ๋ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ์ต๋๋ค.๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋์ฐํ ๋นจ๊ฐ์ ๊ตฌ๋ถ ๊ตฌ๋ถ ํ ์ ์ ์ต์ ํ๋ ๊ฒ์ ๋๋ค .-)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ด ์ฑ์์ :
์์ฑ ๋ JS ์ฝ๋๋ ์ข์ ๋ณด์ด๊ณ ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค. ๋น์ ์์ ์ธ JS ์ด๋ฒคํธ ์ ํ์ ๋ํด ์ด๋ฌํ ์ข ๋ฅ์ ์๋ฃจ์ ์ lib.d.ts์ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
๋ด ์๋ฃจ์ ์ด ์ง๋์น๊ฒ ๋จ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฅผ ์๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.