質問編集履歴

3

更新

2017/10/13 06:58

投稿

m0a
m0a

スコア708

test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,82 @@
90
90
 
91
91
 
92
92
 
93
+ イメージですが以下のようなコードが書けると一番嬉しいんです。
94
+
95
+
96
+
97
+ ```
98
+
99
+ interface Base {
100
+
101
+ a: number
102
+
103
+ b: string
104
+
105
+ dontUse: string
106
+
107
+ }
108
+
109
+
110
+
111
+ type Convert = {
112
+
113
+ [P in keyof Base]: Base[P]; // want to delete from keyof Base 'dontUse' and add 'c'
114
+
115
+ c: string;
116
+
117
+ dontUse: undefined;
118
+
119
+ }
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+ let base: Base = {
128
+
129
+ a: 1,
130
+
131
+ b: '2',
132
+
133
+ dontUse: 'DontUse'
134
+
135
+ }
136
+
137
+
138
+
139
+ delete base.dontUse;
140
+
141
+
142
+
143
+ let convert: Convert = {
144
+
145
+ ...base,
146
+
147
+ c: 'sample',
148
+
149
+ }
150
+
151
+
152
+
153
+ console.log(convert);
154
+
155
+
156
+
157
+ ```
158
+
159
+
160
+
161
+ ``keyof`` でBaseのプロパティが取れるので、それに対して`c`を追加し `dontUse`を削除できれば一番綺麗だと思われます。
162
+
163
+
164
+
165
+
166
+
167
+
168
+
93
169
 
94
170
 
95
171
  尚サンプルコードは[こちら](https://www.typescriptlang.org/play/#src=interface%20Base%20%7B%0D%0A%20%20%20%20a%3A%20number%0D%0A%20%20%20%20b%3A%20string%0D%0A%20%20%20%20dontUse%3A%20string%0D%0A%7D%0D%0A%0D%0Ainterface%20Convert%20%7B%0D%0A%20%20%20%20a%3A%20number%0D%0A%20%20%20%20b%3A%20string%0D%0A%20%20%20%20c%3A%20string%0D%0A%7D%0D%0A%0D%0A%0D%0Alet%20base%3A%20Base%20%3D%20%7B%0D%0A%20%20%20%20a%3A%201%2C%0D%0A%20%20%20%20b%3A%20'2'%2C%0D%0A%20%20%20%20dontUse%3A%20'DontUse'%0D%0A%7D%0D%0A%0D%0Adelete%20base.dontUse%3B%0D%0A%0D%0Alet%20convert%3A%20Convert%20%7B%0D%0A%20%20%20%20...base%2C%0D%0A%20%20%20%20c%3A%20'sample'%2C%0D%0A%7D%20%0D%0A%0D%0Aconsole.log(convert)%3B%0D%0A%0D%0A%0D%0A%0D%0A)においています

2

簡単という記述が紛らわしかった

2017/10/13 06:58

投稿

m0a
m0a

スコア708

test CHANGED
@@ -1 +1 @@
1
- 似ているオブジェクト間の変換処理の簡単な方法について
1
+ 似ているオブジェクト間の変換処理方法について
test CHANGED
@@ -1,4 +1,6 @@
1
+ 以下のコードのように大部分のプロパティが同じで一部のみ異なるオブジェクト間で
2
+
1
- 以下のコード下さい
3
+ 変換処理行いたいと考えおります。
2
4
 
3
5
 
4
6
 
@@ -82,4 +84,12 @@
82
84
 
83
85
 
84
86
 
87
+ 型キャストで無理矢理な変換ですとBaseやConvertに変更があった場合に、コンパイルエラーにならないため
88
+
89
+ それは避けたいと考えています。
90
+
91
+
92
+
93
+
94
+
85
95
  尚サンプルコードは[こちら](https://www.typescriptlang.org/play/#src=interface%20Base%20%7B%0D%0A%20%20%20%20a%3A%20number%0D%0A%20%20%20%20b%3A%20string%0D%0A%20%20%20%20dontUse%3A%20string%0D%0A%7D%0D%0A%0D%0Ainterface%20Convert%20%7B%0D%0A%20%20%20%20a%3A%20number%0D%0A%20%20%20%20b%3A%20string%0D%0A%20%20%20%20c%3A%20string%0D%0A%7D%0D%0A%0D%0A%0D%0Alet%20base%3A%20Base%20%3D%20%7B%0D%0A%20%20%20%20a%3A%201%2C%0D%0A%20%20%20%20b%3A%20'2'%2C%0D%0A%20%20%20%20dontUse%3A%20'DontUse'%0D%0A%7D%0D%0A%0D%0Adelete%20base.dontUse%3B%0D%0A%0D%0Alet%20convert%3A%20Convert%20%7B%0D%0A%20%20%20%20...base%2C%0D%0A%20%20%20%20c%3A%20'sample'%2C%0D%0A%7D%20%0D%0A%0D%0Aconsole.log(convert)%3B%0D%0A%0D%0A%0D%0A%0D%0A)においています

1

typo

2017/10/12 11:19

投稿

m0a
m0a

スコア708

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- 上記コードは変換したjsは想定通りに動きますがTypeSCriptとしては以下のようなエラーが出ます。
65
+ 上記コードは変換したjsは想定通りに動きますがTypeScriptとしては以下のようなエラーが出ます。
66
66
 
67
67
 
68
68