TypeScript インデックスシグネチャを使うときの注意点
以下のコードは、T1 は hoge プロパティは string でそれ以外は number としたい意図です。
type T1 = {
hoge: string
} & {
[x: string]: number
}
const a: T1 = {
hoge: 'hoge',
foo: 100,
}
しかし、このコードはエラーになります。
hoge は number を期待するのに、string になっているため、怒られます。
これは [x: string]: number により、すべてのプロパティが number と期待されてしまうからです。
この動作の改善は過去から行われていますが、いまだに決着していません。
以下の issue を追うと良いです。
最近のコメント