実現したいこと
一部オブジェクトを除外(削除)したいです
前提
userオブジェクトから以下のようにidだけ削除した、新しいオブジェクトを作成したいです
{ "name": "tanaka", "age": 20 }
該当のソースコード
https://www.typescriptlang.org/play?#code/C4TwDgpgBAqgzhATlAvFA3gKClAlgEwH4AuKAOwFcBbAIyW3IEMqJS5hFcyBzBx71uWp1EmAL6ZMAYwD2ZdlAoJEpeElQYGBUgEYANAzLNBAImCMjAa0YmDOfoIBMABnGTZ8mQBsIAOi8y3AAUSkgAlNJycN5+AcEAUgDKAPIAcr7snDy4AGYgIcphEZHywIrKyVS4wKSV1QA8aoh6UCYEJgB8GqGiHtE+-oEFSHXAEX0xgwkp6Zlc3Ln5PaNF7lFlPQCiAB5SXhT4gjt7BxCNyi1t+J3dyiX9sUNbu-uH41GTcUFJaRkc84thohjq8IEUgA
TypeScript
1type User = {2 id: number3 name: string4 age: number5}6 7const user: User = {8 id: 1,9 name: "tanaka",10 age: 2011}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 }
試したこと
TypeScript
1const userExclude: Exclude<User, "id"> = user 2console.log(userExclude)
- 今回のケースであればidが消えなくてもundefinedでも良いので以下のようにも書けます。
でも、OmitやExcludeの存在意義がよくわからなくなってきました。
私のOmitやExcludeの使い方が間違っていますか?
できればOmitやExcludeのように簡潔に書けたほうが好みです。
TypeScript標準の機能を使って実装できたほうが良いと思っています。
TypeScript
1console.log({...user, id: undefined})
補足情報(FW/ツールのバージョンなど)
- TypeScript 5.4
0 コメント