{
"$type": "site.standard.document",
"canonicalUrl": "https://blog.nove-b.dev//posts/what-record-typescript",
"description": "TypeScriptをChatGPTに書いてもらっていたら知らないワードとまた出会った",
"path": "/posts/what-record-typescript",
"publishedAt": "2024-10-28T00:00:00.000Z",
"site": "at://did:plc:2atly2y5kfyjcj5zap6pv4wd/site.standard.publication/3mmxeqr2tcb2k",
"tags": [
"TypeScript",
"Record"
],
"textContent": "ChatGPTにコードを書いてもらっていると知らない書き方と出会うことができ、勉強になる。\n\nChatGPTに書いてもらうことは悪いことばかりじゃないと最近は思うようにしている。\n\nちょっと前までは反骨心から使ってなかったけど、そう思うようになってからはどんどん活用している。\n\nただChatGPTを使って学習したことを活用する機会はChatGPTに奪われているけど。\n\nRecordってなに\n\nそんなChatGPTが提案してきたコードにRecordという型があったので、どういう型なのか調べてみた。\n\n> Record<Keys,\n> Type>はプロパティのキーがKeysであり、プロパティの値がTypeであるオブジェクトの型を作るユーティリティ型です。\n\nとのこと。\n\n例えば、キーがstringで値がnumberのインデックス型を定義するには、\n\nキーがfirstName、middleName、familyNameで、値が文字列になるオブジェクトの型を定義するには、\n\nこんな感じで使用することができる。\n\nただ、2つ目の例のようにKeyが確定している型に関しては\n\nと何が違うのか。\n\n結果的には同じ構造\n\n上記だと同様の型定義になる。\n\nただinterface のほうが拡張性が高く、Recordのほうが簡潔に書けるけど、具体的なプロパティ名や構造を明示しにくいとのこと。\n\nじゃあ、Recordはいつ使うのか。\n\nRecordの使い道\n\n1. Record は多くのキーが同じ型を持つ場合、簡潔に型を定義する時\n\n2. 動的なキーの集合に対して一律の型を定義したい時\n\nこんな感じで動的なキーの型付けや簡潔なオブジェクト型定義が必要なときに使えるらしい。",
"title": "TypeScriptで出てきたRecordってなに"
}