はじめに
TypeScriptのRecord型に詰めた値をfor文で引っ張り出す方法がすぐ出てこなかったのでメモです。
やることはシンプルで、TypeScriptのRecord型というよりかはネストしたオブジェクトの値を取り出したかっただけです。
Record型とは
ReacordとはTypeScriptに用意されたユーティリティ型の一つで、以下のようにRecord<Keys,Type>
の形式で記述できます。プロパティキーがKeysで、プロパティ値がTypeであるオブジェクトタイプを構築します。
このユーティリティを使用すると、ある型のプロパティを別の型にマップできます。
## 解決したいこと
今回取り出したい値は以下の変数smallTownBに格納されている、ageの値だけ取り出したいです。期待値は25 17 16
です。
interface MenberInfo {
age: number;
job: string;
}
type MenberName = "memcho" | "juso" | "ruby";
const smallTownB: Record<MenberName, MenberInfo> = {
memcho: { age: 25, job: "youtuber" },
juso: { age: 17, job: "actor" },
ruby: { age: 16, job: "idol" },
};
解決方法
TypeScriptというよりかは単純にJavaScriptの構文を使用して、ネストしたオブジェクトから値を取り出します。
Object.values()とforEachで値をずつ取り出すことができました!
Object.values(smallTownB).forEach((item) => {
console.log(item.age)
})