質問編集履歴
3
更新
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
簡単という記述が紛らわしかった
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
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
上記コードは変換したjsは想定通りに動きますがTypeS
|
65
|
+
上記コードは変換したjsは想定通りに動きますがTypeScriptとしては以下のようなエラーが出ます。
|
66
66
|
|
67
67
|
|
68
68
|
|