継承先のインターフェースをを持つオブジェクトのプロパティをコピーしたい
IPersonを継承したStudentからPersonのオブジェクトを生成したい。
interface.ts
TypeScript
1interface Person{ 2 Name: string, 3 Age: string, 4} 5 6interface Student extends Person{ 7 StudentId: string, 8}
試したこと
copy.ts
TypeScript
1const student:Student = getStudent() //コピー元 ここからPersonのテンプレートを生成したい 2 3const personTemplate:Person = {...Student, Age:16}; //これだとStudentIdまでコピーされてしまう 4 5const personTemplate:Student = {...Student, Age:16}; 6delete personTemplate.StudentId; //これだと['delete' 演算子のオペランドはオプションである必要があります。]というエラーメッセージが表示される。
現状このような問題を持っています
できれば手動でコピーはしたくないのですが、いい方法はないでしょうか?
「これだとStudentIdまでコピーされてしまう」のですが、「TypeScript内からは」型を読み替えるなどの策を講じなければStudentIdにアクセスする方法はありません。
それでは問題のある用法なのでしょうか?
StudentからPersonをテンプレート的に作成したいので、型を読み替えているつもりだったのですが、コードだと説明が足りなかったかもしれません。少し補足を書きます。
TypeScript の interface に I を付けるのは良くないとされています。
https://typescript-jp.gitbook.io/deep-dive/styleguide#intfsu
補足されても特に疑問点は変わりません。余計なプロパティがあって困る状況なのでしょうか?
DBに保存するときに余計なプロパティがあると困るので余計なプロパティは消したいと思っています。
回答1件
あなたの回答
tips
プレビュー