私はここについてIndexable Typesを読んでいると、以下の例が与えられます。`index`内部` [インデックス:数]:の必要性は何文字列; `
interface StringArray {
[index: number]: string;
}
let myArray: StringArray;
myArray = ["Bob", "Fred"];
let myStr: string = myArray[0];
私は本当に理由を理解していません我々はここでindex
が必要になります。
[index: number]: string;
^^^^^
私がそこに任意の名前を使用することができますし、それが動作すると思われ、例えば:
interface StringArray {
[foo: number]: string;
}
let myArray: StringArray;
myArray = ["Bob", "Fred"];
let myStr: string = myArray[0];
は、私はまた、次の例を見てきました:私は理解し
ngOnChanges(changes: {[propName: string]: SimpleChange}): void {
console.log('Changes', changes);
}
はインラインインデックス可能な型宣言のいくつかの種類を使用しています。propName
の代わりindex
と
{[propName: string]: SimpleChange}
。
もし私が間違っていると私はあまりにも強く叩かれませんが、これは私が理解していることです:これはインデックスの「署名」であり、名前はそれほど重要ではありませんが、型宣言として。 'string'だけを使用した場合、それは変数名または型である可能性があります。 'string:string'では、型が何であるかについてあいまいさはありません。 – Kaddath
@Kaddath、ええ、署名することもできますが、私には 'interface StringArray { [number]:string; } 'と思われます。ちょうどこの名前が可読性のためだけにあることを確認したいのです –
それだけで書かれた 'number'もまたあなたが実際の値で置き換えようとしている変数かもしれないようです..私も確信を持っていることに興味があります;) – Kaddath