TypeScriptとreduceはあまり相性がよくない?
reduceを使った以下のコードがある。
type T1 = 'aaa' | 'bbb' | 'ccc'
const arr: T1[] = ['aaa', 'bbb', 'ccc']
const result = arr.reduce((acc, v) => {
return {...acc, [v]: 0}
}, {})
result の型は {} と推論される。
期待した型にする場合は、アサーションを使わないといけない。
type T1 = 'aaa' | 'bbb' | 'ccc'
const arr: T1[] = ['aaa', 'bbb', 'ccc']
const result = arr.reduce((acc, v) => {
return {...acc, [v]: 0}
}, {} as {[k in T1]: 0})
最近のコメント