teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

少し追記

2021/09/14 03:15

投稿

maisumakun
maisumakun

スコア146663

answer CHANGED
@@ -1,3 +1,20 @@
1
1
  TypeScriptの型は**コンパイル時**だけの存在で、実行時には消えてしまうので、型と実行時の値を照合する、ようなことはできません。
2
2
 
3
- 実行時に参照したいのであれば、何らかの**値**として確保しておく必要があります。
3
+ 実行時に参照したいのであれば、何らかの**値**として確保しておく必要があります。
4
+
5
+ ----
6
+
7
+ (追記)
8
+
9
+ 「値が全部同じ型でいい」なら、配列から型を作ることは可能です。
10
+
11
+ ```typescript
12
+ const keys = ["name", "address", "phone"] as const;
13
+
14
+ // 配列の型から値の型を抽出
15
+ type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType[number];
16
+
17
+ type User = {
18
+ [k in ArrayElement<typeof keys>]: string;
19
+ }
20
+ ```