Type Scriptエラーproperty does not exist on type Object

1251 ワード

Type Scriptエラーproperty does not exist on type Object
Type ScriptではJSで対象属性を取得すると、Property'value'does not exist on type'Object'のような形のエラーが発生することがあります.具体的なコードは以下の通りです.
var obj: Object = Object.create(null);
obj.value = "value";//[ts] Property 'length' does not exist on type'Object'.
これは、Typeescriptがコードチェックを実行する際に該当する属性を定義していないため、このエラーに遭遇した場合は以下のような解決方法があります.
1.オブジェクトタイプをanyに設定する
これは非常に効率的な解決法であり、任意の属性の変更にアクセスできます.コンパイルエラーは発生しません.具体的なコードは以下の通りです.
var obj: any = Object.create(null);
obj.value = "value";
2.文字でオブジェクトの属性を取得する
この方法は少しハックな感じがしますが、コンパイルミスの問題は解決できます.具体的なコードは以下の通りです.
var obj: Object = Object.create(null);
obj["value"] = "value";
3.オブジェクトが持つ属性をインターフェースで定義する
煩わしいが、最も提唱された解決方法である.オブジェクトをインターフェースで宣言すると、属性値が一目瞭然です.具体的なコードは以下の通りです.
var obj: ValueObject = Object.create(null);
obj.value = "value";

interface ValueObject {
  value?: string
}
4.断言を使って強制執行
ステートメントが断言されると、コンパイラは断言の種類によって実行されます.具体的なコードは以下の通りです.
var obj: Object = Object.create(null);
(obj as any).value = "value";
転載先:https://www.cnblogs.com/limbobark/p/10043769.html