# keyof

**keyof**はオブジェクトの型からプロパティ名を型として返却する型演算子です。

例えば、`OneDayMeals`というオブジェクトの型がある場合に、その型のオブジェクトから、特定のkeyの値の長さを取得する関数を作成するとします。その場合、その関数の引数の型を、`key: 'morning' | 'lunch' | 'dinner'`と宣言する必要がありますが、`keyof`を使用することで、`key: keyof OneDayMeals`と宣言することができます。

<pre class="language-typescript" data-title="index.ts◎"><code class="lang-typescript">...
  updatedAt: "2023-01-01",
};

<strong>type OneDayMeals = {
</strong><strong>  morning: string;
</strong><strong>  lunch: string;
</strong><strong>  dinner: string;
</strong><strong>};
</strong><strong>
</strong><strong>const meal1: OneDayMeals = {
</strong><strong>  morning: 'フレンチトースト',
</strong><strong>  lunch: '焼きそば',
</strong><strong>  dinner: 'とんかつ定食'
</strong><strong>}
</strong><strong>
</strong><strong>const outputValueLength = (key: keyof OneDayMeals) => {
</strong><strong>  console.log(meal1[key].length);
</strong><strong>}
</strong></code></pre>
