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

TypeScript递归类型生成声明后变为any,求无需显式注解的隐式解决方案

问题根因

你遇到的构建后类型变为any的问题,本质是TypeScript在生成.d.ts声明文件(对应你配置里的declaration: true)时,无法自动推导递归结构的返回类型,会直接降级为any。开发阶段单文件内的局部类型推导可以正常工作,是因为不需要输出完整的跨文件可用的类型声明,不需要处理递归类型的定义序列化问题。

可行的轻量化方案

完全零类型注解的方案目前在TypeScript中不存在,因为递归类型推导需要至少一个显式的类型锚点来避免推导死循环,这是TypeScript类型系统的设计限制。

不过你可以用比现有方案更轻量化的注解写法,只需要给递归返回的chain方法加返回值注解即可,不需要定义完整的函数类型:

export const chainCreator = () => {
    return {
        // 仅给chain方法添加返回值类型注解,其余类型自动推导
        chain: (): ReturnType<typeof chainCreator> => {
            return chainCreator()
        },
        end: () => {
            return 'end'
        },
    }
}

这个方案的维护成本极低:后续如果你修改返回对象的其他属性、方法,不需要同步修改类型注解,所有非递归部分的类型都会自动推导,完全符合你要的自动化、低维护成本的需求。

补充说明

你的tsconfig配置没有问题,不需要调整配置来适配这个场景。

内容的提问来源于stack exchange,提问作者Acid Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:27:04