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

如何为inferType函数定义类型以推断任意嵌套对象的类型?

解决TypeScript嵌套对象类型推断问题

要让inferType函数完整保留输入对象的嵌套类型信息,只需要让泛型直接捕获输入的完整类型即可,不用手动限制属性类型:

function inferType<T>(obj: T): T {
  return obj;
}

为什么之前的写法不行?

你之前的代码{ [K in keyof T]: unknown }会把泛型T的每个属性都强制转为unknown,导致TypeScript只能识别顶层的键(比如foo和key),但深层的属性类型全部丢失,自然无法提供嵌套属性的自动补全。

使用效果

当你用修改后的函数定义变量o时:

const o = inferType({
  foo: {
    bar: 'bar',
    count: 5,
    nested: {
      lorem: 'ipsum',
      nested: true,
    }
  },
  key: 'value'
});

TypeScript会自动推断出o的完整类型,和你期望的结构完全一致:

{
  foo: {
    bar: string,
    count: number,
    nested: {
      lorem: string,
      nested: boolean,
    }
  },
  key: string,
}

此时在编辑器中输入o.foo.nested.时,就能正常自动补全lorem和nested属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:10:23