前提・実現したいこと
TypeScriptにおいて,あるインターフェース型の変数を動的に初期化したいです.
例えば,StudentScoreというインターフェースがあるとします.
TypeScript
1export interface StudentsScore { 2 A: number; 3 B: number; 4 // ... 省略 5 Z: number; 6}
そして,StudentScore型の変数studentScoreを作り,そのプロパティを動的に0で初期化したいと考えています.
TypeScript
1import { keys } from "ts-transformer-keys"; 2 3const studentNames = keys<StudentScore>();// 生徒の名前が入った配列["A", "B", ..., "Z"] 4const studentsScore: StudentsScore = {};// 各生徒の成績 5 6// 各生徒の成績を0点で初期化する 7for(const studentName of studentNames) { 8 studentsScore[studentName] = 0; 9}
発生している問題・エラーメッセージ
const studentsScore: StudentsScore = {};// 各生徒の成績
において,次のエラーが発生しました.
Error
1型 '{}' には 型 'StudentsScore' からの次のプロパティがありません: A, B, C, D、22 など。ts(2740)
試したこと
const studentsScore: StudentsScore = {};// 各生徒の成績
をコメントアウトしてみましたが,ページのコンソール上で次のエラーが発生します.
Error
1Uncaught TypeError: Cannot set property 'A' of undefined
また,次のソースコードのように全プロパティを静的に初期化すればエラーを吐きませんが,スマートではないので使いたくありません.
TypeScript
1const studentScore: StudentScore = { 2 A: 0, 3 B: 0, 4 C: 0, 5 D: 0, 6 E: 0, 7 // ... 8};
どうすれば生徒の成績を動的に初期化することができますか?
実行環境
- typesciprt 4.3.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/08/27 15:34