1. ホーム
  2. typescript

[解決済み] 新しい Typescript 1.8.4 のビルドエラー。" ビルド。Property 'result' がタイプ 'EventTarget' に存在しません。"

2023-06-28 01:05:06

質問

私はtypescriptに新しいです。私のDurandalアプリケーションで、私はVS-2012からVS-2015に移行し、typescript 0.9からtypescript 1.8.4を意味します。移行した後、私は非常に多くのビルドエラーを得た。私は1つを除いて、それらのすべてを解決しました。私はイベントの種類で以下のビルドエラーを取得しています。

ERROR: " ビルドです。プロパティ 'result' は、タイプ 'EventTarget' に存在しません。

そして、コードはまさに以下のようなものでした。

var reader:any,
target:EventTarget;

reader= new FileReader();
reader.onload = function (imgsrc){
    var fileUrl = imgsrc.target.result;
}

"Imgsrc"は、タイプイベントを取っています。

typescript 0.9では正常に動作していますが、1.8.4では'EventTarget'型に'result'が存在しないとしてエラーを投げています。 どなたか、この問題を解決するためにお手伝いいただけないでしょうか。

注意:"target:EventTarget" は lib.d.ts から取得しています。

どのように解決するのですか?

一方 any は薬である (ほとんど何にでも使えますが...それならTypeScriptの利点はどこにあるのでしょう) ... 同じような問題が報告されており、素敵な (TypesScript的な) による回避策が提案されています。

lib.d.ts のイベントインターフェイスの currentTarget を変更するリクエスト

を引用させてください。

<ブロッククオート

私はこの TS2339 に遭遇しました: プロパティ 'result' はタイプ JS FileReaderのonloadにある'EventTarget'型に'result'が存在しません。 また、FileReaderの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);
    ...
}

そして、lib.d.tsに何らかの変更があるまでは、まだ既知のインターフェイスで作業しています。

2019年12月編集。

この修正により、以下のようになる可能性があります。

エラー TS2322: 型 '(this: FileReader, e: FileReaderEvent) => void' は型 '(this: FileReader, ev: ProgressEvent) => any' に割り当てることができません。

もしそうなら、次のように置き換えるだけです。

 interface FileReaderEvent extends Event {

 interface FileReaderEvent extends ProgressEvent {