Object.keys を使う時、その戻り値の型が string[] になっているので、keyを使って何か処理をしたいときに string型として値を使わなければならない
そのため、これまで以下のようにas
を使って値を他の型に強制していたが、全ての使用箇所で付けなければならくなってしまうのでやめたい
type Season = "Spring" | "Summer" | "Autumn" | "Winter" type Seasons = { [K in Season]: string } const seasons = { Seasonsを実装したオブジェクト } Object.keys(seasons).map((key) => ({ value: key as Season, label: labels[key as Season], }));
調べるとas
はつかなくてはならないみたいだが、少なくとも値の方ではなく Object.keys の方でなんとかしたい
ということで、以下のように Object.keys に as をつけることで key に型をつけることができた
(Object.keys(seasons) as Season[]).map((key) => ({ // key: Season value: key, label: labels[key], }));