81

forTypeScript のドキュメントでは、 orのようなループについては何も述べていませんfor-in。言語で遊んでみると、anyorstring変数のみがforループでサポートされているようです。

なぜこの決定が下されたのですか?

型情報を使用して、厳密に型指定された反復変数を持たないのはなぜですか?

4

4 に答える 4

72

TypeScript は、自分の足を撃つための銃を提供していません。

iterator 変数は string 、ピリオドなので文字列です。観察:

var obj = {};
obj['0'] = 'quote zero quote';
obj[0.0] = 'zero point zero';
obj['[object Object]'] = 'literal string "[object Object]"';
obj[<any>obj] = 'this obj'
obj[<any>undefined] = 'undefined';
obj[<any>"undefined"] = 'the literal string "undefined"';

for(var key in obj) {
    console.log('Type: ' + typeof key);
    console.log(key + ' => ' + obj[key]);
}

現在、キーと値のペアはいくつありobjますか? 6、多かれ少なかれ?いいえ、3、すべてのキーは文字列です。

Type: string
0 => zero point zero
Type: string
[object Object] => this obj; 
Type: string
undefined => the literal string "undefined" 
于 2012-10-19T21:03:29.587 に答える
32

for-inステートメントは、実際にはオブジェクトのプロパティを列挙するためにあります。これは、TypeScriptでの実装方法です。配列での使用にはいくつかの問題があります。

TypeScriptチームを代表して話すことはできませんが、これがこの言語での実装の理由であると思います。

于 2012-10-18T09:11:33.310 に答える