質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

2回答

559閲覧

typescriptでinterfaceの末尾に数字をつけて宣言にしたい

tensaikumabouzu

総合スコア45

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2023/03/20 02:00

編集2023/03/20 02:20

実現したいこと

typescript

1interface IallDisks{ 2 disk_name_1?: string 3 disk_name_2?: string 4 disk_name_3?: string 5 disk_name_4?: string 6 disk_name_5?: string 7 disk_name_6?: string 8 disk_name_7?: string 9 disk_name_8?: string 10 disk_name_9?: string 11 disk_name_10?: string 12 disk_name_11?: string 13 disk_name_12?: string 14 disk_name_13?: string 15 disk_name_14?: string 16 disk_name_15?: string 17 disk_name_16?: string 18 disk_name_17?: string 19 disk_name_18?: string 20 disk_name_19?: string 21 disk_name_20?: string 22 disk_name_21?: string 23 disk_name_22?: string 24 disk_name_23?: string 25 disk_name_24?: string 26 disk_name_25?: string 27}

この25個あるdisk_name_${number}を綺麗にinterfceで宣言がしたいのですが、
どうすれば実現できますでしょうか・・・?
typeでやるしかないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/03/20 02:09

disk_name_20がないのは意図的なものでしょうか?
tensaikumabouzu

2023/03/20 02:19

失礼いたしました。コピーミスです。 修正します。
guest

回答2

0

考えられる方法として下記の様に定義する方法。
こちらは一応みたしはしますがdisk_name_${number}という形式以外も可能になってしまします。

typescript

1interface IallDisks { 2 [key: string]: string | undefined; 3}

そのため今回のケースではMapped Typeが適していると思います。
https://typescriptbook.jp/reference/type-reuse/mapped-types

[key in ``disk_name_${1 | 2 | 3 | 4 | 以下省略}``] : と定義することで
明示的にdisk_name_から始まる1~25までのkeyを指定できます

typescript

1type IallDisks={ 2[key in `disk_name_${1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25}`]: string|undefined; 3}; 4 5## または 6type DiskNames = { 7 [key in `disk_name_${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25}`]: string | undefined; 8} 9 10interface IallDisks extends DiskNames {} 11

イメージ説明
イメージ説明

投稿2023/03/20 02:36

natsume2233

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミング中に出てくる変数名などの名前に連番などを付ける場合
代わりに配列や辞書などを使うことを検討してください。

投稿2023/03/20 02:08

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問