実現したいこと
オブジェクトの一部を除外(削除)したいです
前提
userオブジェクトから以下のようにidだけ削除した、新しいオブジェクトを作成したいです
{ "name": "tanaka", "age": 20 }
該当のソースコード
TypeScript
1type User = { 2 id: number 3 name: string 4 age: number 5} 6 7const user: User = { 8 id: 1, 9 name: "tanaka", 10 age: 20 11} 12 13console.log(user) 14// 一応JSONにシリアライズした結果も確認してみる 15// console.log(JSON.stringify(user)) 16 17const userOmit: Omit<User, "id"> = user 18 19console.log(userOmit) 20// 一応JSONにシリアライズした結果も確認してみる 21// console.log(JSON.stringify(userOmit))
発生している問題・エラーメッセージ
2回目のconsole.logは id が消えていて欲しい。
しかし、idが出ている。
// 1回目の console.log の結果 { "id": 1, "name": "tanaka", "age": 20 } // 2回目の console.log の結果 { "id": 1, "name": "tanaka", "age": 20 }
試したこと
-
Omit を利用したプログラムを書いたが期待する結果を得られなかった
-
Exclude を利用したプログラムを書いたが期待する結果を得られなかった
TypeScript
1const userExclude: Exclude<User, "id"> = user 2console.log(userExclude)
- 今回のケースであればidが消えなくてもundefinedでも良いので以下のようにも書けます。
でも、OmitやExcludeの存在意義がよくわからなくなってきました。
私のOmitやExcludeの使い方が間違っていますか?
できればOmitやExcludeのように簡潔に書けたほうが好みです。
変に関数などを作らずにできる限りTypeScript標準の機能を使って実装できたほうが良いと思っています。誰が見てもOmitやExcludeは要素を削除していると分かるからです。
TypeScript
1console.log({...user, id: undefined})
補足情報(FW/ツールのバージョンなど)
- TypeScript 5.4
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。