2016-07-22 12 views
0

私は現在、Typescriptを学習しており、ドキュメントのいくつかのセクションを理解するのに問題があります。設定は「種のペット[「種」] =「哺乳類」のようなキーで設定することができますなぜ私は理解していないtypescript.langハンドブックTypescript/ECMAScript特性で設定

let pets = new Set(["Cat", "Dog", "Hamster"]); 
pets["species"] = "mammals"; 

for (let pet in pets) { 
    console.log(pet); // "species" 
} 

for (let pet of pets) { 
    console.log(pet); // "Cat", "Dog", "Hamster" 
} 

上のコードを参照してください。デフォルトでは、セットはキーと値の特性ではないと思いますか? (ペットのペットを聞かせて)ため

と理由を説明助けてください「猫」、「犬」、「ハムスター」ノー「哺乳類」

です。多くのありがとう

+0

これは、値をセットに追加する方法ではありません。値を追加するための '.add'メソッドがあります。 – loganfsmyth

答えて

1

セットは反復可能オブジェクトです。初期配列セットは反復可能な値であり、for..ofを通してそれらにアクセスできます。 pets["species"]= "mamals"と言うとき、値が "mamals"のプロパティ "species"を作成していますが、それは繰り返し可能な値の一部ではないため、for..inを使用したときにそれを見ることができます。

for..ofはiterableの値を表示し、for..inはオブジェクトのプロパティを表示します。これが助けてくれるといいと思います。

+0

私はlet pets = new Set(["Cat"、 "Dog"、 "Hamster"])と言っています。それは、ペットがSetとして推論された型を持つことを意味します。あなたがプロパティ "種"と言うとき、あなたはセットではないオブジェクトのプロパティを意味する、そうですか?あなたの素晴らしい答えに感謝します。なぜfor..inはちょうど「哺乳類」なのですか?なぜなら、Cat、Dog、Hamsterのインデックスは0,1,2です。私の参考文献はhttps://www.typescriptlang.org/docs/handbook/iterators-andからです-generators.html – Gibi

+1

JS Exeptリテラルのすべてがオブジェクトでも機能です。セットもオブジェクトです。 Setには、それを管理するのに役立つ、列挙可能でないプロパティのセットが存在します。 for..inはプロパティ名であり、列挙可能なので「種」にのみアクセスします。for..inによってリストされます –