name1: any;
name2: any[];
this.name1 = this.name2;
name1: any;
name2: any[];
this.name2 = this.name1;
any
データ型を許可するtypescriptがアクセスany[]
データ型になり得る理由。any[]
データ型と同じようにデータのアクセスany
型にすることができますか?そしてどちらが使用するのが最適でしょうか?また、データ型がのような単なるオブジェクト(配列ではない)の場合string or number or object or any
、any[ ]
実行時またはコンパイル時のエラーを表示せずに、なぜそのオブジェクト型を受け入れるのでしょうか。。
このTypeScriptコードを見ると:
let name1: any = "John";
let name2: any[] = ["Mary", "Sue", "Sally"];
name1 = name2;
let name3: any[] = ["Luke", "Paul", "Ringo"];
let name4: any = "Mark";
name3 = name4;
コンパイル先のJavascriptは次のとおりです。
var name1 = "John";
var name2 = ["Mary", "Sue", "Sally"];
name1 = name2;
var name3 = ["Luke", "Paul", "Ringo"];
var name4 = "Mark";
name3 = name4;
JavaScript変数は動的であり、型が設定されていません。これはTypeScriptコンパイラによって警告またはエラーとして報告される可能性があると想像できますが、それによってJavaScriptの生成が停止したり、JavaScriptの実行が妨げられたりすることはありません。
したがって、any
/any[]
割り当てに関する現在のコンパイルエラーや警告はありませんがany[]
、開発者に期待を通知するために使用できます。
注:これは、私が作成したり、使用することを提案したりするコードではありません。これは、値を含むOPコードであり、結果のJavaScriptがどのようになるかを示しています。また、JavaScriptにコンパイルされるため、変数には動的な型があるため、型による実行時エラーは発生しません。これが、TypeScriptを使用する理由の1つです。コンパイル時の静的型チェックです。このため、一つは通常避けるだろうany
し、any[]
クラスまたはインタフェースの賛成でより良いデータを表しています。この場合、string
vs。string[]
(またはその他のタイプ)はコンパイラエラーを表示します。
この例では、変数が割り当てから型を推測し、それらの使用法が後続のコードで型チェックされるため、name1 = name2
との両方name3 = name4
がコンパイル時エラーになります。
let name1 = "John";
let name2 = ["Mary", "Sue", "Sally"];
name1 = name2; //Type 'string[]' is not assignable to type 'string'.
let name3 = ["Luke", "Paul", "Ringo"];
let name4 = "Mark";
name3 = name4; //Type 'string' is not assignable to type 'string[]'.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加