TypeScript中如何定义无键空映射类型作为泛型默认值
TypeScript 泛型映射类型默认空值实现问题
我定义了一个将键映射为函数的泛型映射类型:
type SomeMappedType<T, R> = { [K in keyof T]: (...args: any[]) => R }
该类型通过配置项类型传入消费函数,且对应属性本身为可选属性:
type Options<T = any, R = any, P extends SomeMappedType<T, R> = SomeMappedType<T, R>> = { prop1?: P }
我消费该配置值后返回对应的输出类型:在实现逻辑中,若prop1为undefined则不会将其纳入输出范围,但当前的Output类型在该场景下仍会返回非空映射类型,推导结果如下:
const test2: { [x: string]: any; }
我当前定义的输出类型如下:
type Output<T, R, P extends SomeMappedType<T, R>> = ResolveType<{ [K in keyof P]: ReturnType<P[K]> }>;
请问是否有方式让默认的SomeMappedType<T, R>能够表示其本身不包含任何键,即寻找与空数组[]等价的映射类型实现。
问题初始复现可查看对应的TypeScript Playground。
感谢任何帮助!
补充说明
@spender提供的方案可以解决我最初的简单示例(该示例场景过于简化)。我提供了更新后的示例,其中包含2个不同类型的可选属性,二者均会对最终Output类型产生影响。
内容的提问来源于stack exchange,提问作者madcapnmckay
相关产品推荐
相关产品推荐

