Typescriptの index signature の key には 他の type は使えないよって話
type UserId = string type Users = { [key: UserId]: User } // error: An index signature parameter type cannot be a type alias. Consider writing '[key: string]: string' instead.
index signature の key には string
or number
しか使えないので、
上記のようなエラーが出ます。
同じようなことで、issueもいくつかあり討論されています。 github.com
僕が index signature
と map
を混在していたのが行けないのですが、
UserIdをKeyにして、Userを取得するMapを作成したいだけなら
以下のように書けるのでこっちで使おうと思います。(てか、これがふつう...)
type UserId = string type Users = Map<UserId, User>
言語仕様も知らないで適当に使っているのは本当に行けないんだなと反省しました...