前提
TypeScriptでinterfaceの異なるオブジェクトの同じkeyを持つプロパティを更新したいと考えているのですが、以下のエラーが出てしまい、どう対応するればいいのか判らず困っています。
ご教授宜しくお願い致します。
実現したいこと
- personというinterfaceで定義したuserのname, age, idをuser_editの値に書き換えたい
- プロパティごとに代入していけば可能ですが、実際は多くのプロパティがあるため、行数を少なくしたい
発生している問題・エラーメッセージ
Type 'string | number' is not assignable to type 'never'. Type 'string' is not assignable to type 'never'.
該当のソースコード
typescript
1interface person { 2 name: string; 3 age: number; 4 id: number; 5} 6 7interface edit_person extends person { 8 work: string; 9 tel: string; 10 address: string; 11} 12 13const user: person = { 14 name: 'before', 15 age: 20, 16 id: 1 17}; 18 19const user_edit: edit_person = { 20 name: 'after', 21 age: 30, 22 id: 2, 23 work: '会社員', 24 tel: '090-xxxx-xxxx', 25 address: '東京都XXXX' 26}; 27 28for (const key in user) { 29 const user_key: keyof person = key as keyof person; 30 const data = user_edit[user_key]; 31 if (data) { 32 // ここでエラー 33 user[user_key] = data; 34 } 35}
あなたの回答
tips
プレビュー