これはtypescriptですofficial documentからの例です:インデックスタイプが2回定義されているのはなぜですか?
class Animal {
name: string;
}
class Dog extends Animal {
breed: string;
}
// Error: indexing with a 'string' will sometimes get you a Dog!
interface NotOkay {
[x: number]: Animal;
[x: string]: Dog;
}
何を私に混乱するインデックス型の定義である:私の印象で
interface NotOkay {
[x: number]: Animal;
[x: string]: Dog;
}
、インデックス型が配列(JavaScriptでのオブジェクト)のようなものです。 "[]"演算子(例:
a [10]または["Tom"])を使用すると、そのメンバーにのみアクセスできます。
上記の例がindexとreturnの2回定義されているのはなぜですか? 初めて:
[x: number]: Animal;
二度目:
[x: string]: Dog;
つのタイプであるべきである[]演算子を使用して?例えばa [10] ??
構造型システムに基づいて、AnimalとDogは互いに割り当てることができます。したがって、あなたの遊び場の例にはエラーはありません。しかし、なぜ戻り値が同じ型であると考えることができるインデックスと戻り値の2つのセットを定義するのですか? –
戻り値は関数から返された値です - あなたの質問に関数の返信文はありません: - /あなたが意味することを明確にできますか? –
@ NicolasS.Xu私はあなたの質問に答えませんでしたか?そうでない場合は、私に知らせてください、私は喜んで助けてくれるでしょう。もしそうなら、それを受け入れることはいいだろう;-) –