TypeScript オブジェクトのすべてのプロパティの型をnumberにする

Hogeは、第一引数に変換したいオブジェクト型を受け取り、すべてのプロパティの値の型を第二引数にしたオブジェクト型を返す。

//第一引数に指定した型のすべてのプロパティの型をTYPEにする
type Hoge<T extends {[key: string]: any}, TYPE> = {
    [K in keyof T]: TYPE
}
type HogeNumber = Hoge<{aaa: string, bbb: boolean}, number>
// {aaa: number, bbb: number}