根据对象的键推断对象的返回类型

问题描述 投票:0回答:1

我想做的很简单,我有一个叫做

Config
的类。在这个类中,我有一些字段,每个字段都有不同的类型。

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

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

这个参数效果很好,我的

Config
类中的所有字段名称都会自动完成,但基于此,我想推断这个函数的返回类型。因此,假设我想要获取的字段具有
DbConfig
类型,当我调用此
get
方法时,我希望返回也为
DbConfig
,并且不要像我在示例中那样使用任何类型上面。

这可能吗?如果是的话,该怎么做?

typescript
1个回答
1
投票

您可以将

key
参数用作泛型类型
K
。然后,
K
可用于为返回类型索引
Config

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

游乐场

© www.soinside.com 2019 - 2024. All rights reserved.