TypeScriptで一部要素を削除したい

実現したいこと

一部オブジェクトを除外(削除)したいです

前提

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 コメント