New Typescript 1.8.4 build error: “ Build: Property 'result' does not exist on type 'EventTarget'. ”

前端 未结 14 1940
情书的邮戳
情书的邮戳 2020-12-23 14:48

I am New to typescript. In my Durandal application I migrated to VS-2012 to VS-2015 means typescript 0.9 to typescript 1.8.4. After migrated I got so many build errors. I re

14条回答
  •  佛祖请我去吃肉
    2020-12-23 15:13

    While any is a medicine (almost for anything, but... where is the TypeScript benefit then)... there is a similar issue reported and nice (TypesScript-ish) workaround suggested

    Request to change currentTarget in Event interface for lib.d.ts

    let me cite:

    I ran into this TS2339: Property 'result' does not exist on type 'EventTarget' in JS FileReader onload, and another warning for getSummary() on the event passed to FileReader's onerror.

    My work-around, to suppress the horrid red squiggily lines;-) is the following:

    interface FileReaderEventTarget extends EventTarget {
        result:string
    }
    
    interface FileReaderEvent extends Event {
        target: FileReaderEventTarget;
        getMessage():string;
    }
    

    Then in my app:

    reader.onload = function(fre:FileReaderEvent) {
        var data = JSON.parse(fre.target.result);
        ...
    }
    

    And, until some change in lib.d.ts, we still do work with known interface

    EDIT Dec 2019:

    With this fix, you might be getting

    error TS2322: Type '(this: FileReader, e: FileReaderEvent) => void' is not assignable to type '(this: FileReader, ev: ProgressEvent) => any'.

    If so, just replace

     interface FileReaderEvent extends Event {
    

    with

     interface FileReaderEvent extends ProgressEvent {
    

提交回复
热议问题