実現したいこと
TypeScriptで定義した型のうち、必須項目のkeyだけを抽出したいです。
何のために?
型の必須項目だけをDBに保存したい
データベースから取得した値を使ってReactでUIを作り、
UIに変更が加わった際にデータベースに保存する仕組みをReact×TypeScriptで開発しています。
その際、クライアント側でUIのためだけに必要なデータは不要なので取り除いて保存します。
ts
1// React内の型定義 2interface HogeProps { 3 id: string; 4 name: string; 5 isActive?: boolean; 6 isOpened?: boolean; 7}
例えば上記のようなデータがあるとします。
isActive
とisOpened
は何かしらの状態を判定してUIに反映するためのものであり、DBに残したいのはid
とname
のみです。
(例えば、nameに変更が加わった時などに保存したい)
イケてる方法が見つからない...
現状、不要なデータをトリムするような関数を作って、それを通してからDBに保存しています。
ts
1const dataFilter = (data: HogeProps) => { 2 const newData = data; 3 const uselessKeys = ['isActive', 'isOpened']; 4 uselessKeys.forEach(key => { 5 delete newData[key]; 6 }); 7 return newData; 8}
このような感じです。
これだと、型に変更が加わった時にいちいち手直しする必要があり、スマートではないと思います。
型を引数にして、必須の項目だけを抽出して返してくれるような関数があればと思ったのですが、調べても見つからず...
型を文字列化して、正規表現で抽出する方法も考えたのですが、そもそも型を値として使うことはできないですし...
何か良い方法はないでしょうか?
TypeScript初心者です。
回答2件
あなたの回答
tips
プレビュー