打字稿根据其键推断出对象的 return 类型

Typescript infer return type of an object based on its key

我想做的很简单,我有一个class叫Config。在这个 class 中,我有一些字段,每个字段都有不同的类型。

现在我有一个基本上接受字段名称作为参数和 return 它的值的方法,如下所示:

get(key: Extract<keyof Config, string>): any {
  // this.config is my Config class
  return this.config[key];
}

这个论点很好用,我的 Config class 中的所有字段名称都自动完成了,但基于此,我想推断出这个的 return 类型功能。所以假设我要获取的字段具有 DbConfig 类型,当我调用此 get 方法时,我希望 return 也为 DbConfig,而不是像我在上面的例子中那样使用任何东西。

这可能吗?如果可以,该怎么做?

您可以将 key 参数用作通用类型 KK 然后可用于为 return 类型索引 Config

function get<K extends keyof Config & string>(key: K): Config[K] {
  return config[key]
}

Playground