0
ケース:typescriptでジェネリック型宣言をフラット化するには?
機能入力ネストされた汎用オブジェクト、フォローなどの出力フラットオブジェクト:この場合
interface Deep<T> {
p1: T;
p2: T;
}
type Nested<T> = {
[P in keyof T]: Deep<any>;
}
type Flat<T, ?> = {
[P in keyof T]: T[P]?;
}
function flat<T extends Nested<T>>(input: T, p: keyof Deep<any>): Flat<T, ?> {
const put: any = {}
for (let k in input)
put[k] = input[k][p]
}
const foo = flat({
name: { p1: 'name', p2: 'name' },
{ fn: { p1:() => 0, p2:() => 1 }
})
、入力が異なるDeep
型のネストされたオブジェクトですが、私はtypescriptですが、ことを願っ私はfoo.name
のタイプをstring
、foo.fn
のタイプを() => number
としています。
Flat<T, ?>
のタイプはどのように宣言すればよいですか?