generated at
任意のindex signatureではなく、Mapを使う
この記事内では、「keyとする値が決まっている場合」についても言及しているが、それは自明なので省略mrsekut


ts
type Foo = { year: number; [key: string]: number; }; const foo: Foo = { year: 2021 }; const hoge = foo.yearrr; // number
hoge は実際は、 undefined だが、index signatureを使っているせいで number と推論される


Mapを使う
ts
const foo = new Map<string, number>(); foo.set('year', 123); const hoge = foo.get('hoge'); // number | undefined
毎回nullチェックを書かないといけないが、だからこそ安全