えぐろぐ

https://twitter.com/eggpogg

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 signaturemap を混在していたのが行けないのですが、
UserIdをKeyにして、Userを取得するMapを作成したいだけなら
以下のように書けるのでこっちで使おうと思います。(てか、これがふつう...)

type UserId = string
type Users = Map<UserId, User>

言語仕様も知らないで適当に使っているのは本当に行けないんだなと反省しました...

typescript-jp.gitbook.io