You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:12:07