こちらの記事と関連するかもしれないのですが、
分割代入したときの型の保持について質問させてください。
TypeScriptで関数の引数に分割代入したときの型指定方法
前提・実現したいこと
分割代入での変数上書きで型をしたい。
またはおすすめの書き方があればご教示いただきたい。
該当のソースコード
typescript
1export class hoge { 2 foo:string = "hoge:foo" 3 ver:string = "hoge:ver" 4 baz:string = "hoge:baz" 5} 6export class fuga { 7 baz:string = "fuga:foo" 8} 9 10function myUnion(input:fuga) : hoge { 11 let ret = new hoge() 12 ret = {...ret,...input} 13 return ret 14} 15 16const myHoge = new hoge() 17console.log(myHoge) 18console.log(myHoge instanceof hoge) 19//hoge { foo: 'hoge:foo', ver: 'hoge:ver', baz: 'aaa' } 20//true 21 22const expectMyHoge:hoge = myUnion(new fuga()) 23console.log(expectMyHoge) 24console.log((expectMyHoge as hoge) instanceof hoge) 25//{ foo: 'hoge:foo', ver: 'hoge:ver', baz: 'fuga:foo' } 26//false
function myUnion
の中でclass hogeをnewして、引数に渡された差分だけを更新して、hoge型を返却したいです。
プロパティが少量であれば、以下のようなコードで実現できるのですが
typescript
1function myUnion(input:fuga) : hoge { 2 let ret = new hoge() 3 ret.baz = input.baz 4 return ret 5}
プロパティが大量にあることを想定した場合、分割代入が便利かと考えています。
このようなコードでは、型情報が飛んでしまうものでしょうか。
またこういった要件の場合、どう書くのがおすすめでしょうか。
お手数をおかけしますが、よろしくお願いもうしあげます。
回答1件
あなたの回答
tips
プレビュー