我想做的很简单,我有一个叫做
Config
的类。在这个类中,我有一些字段,每个字段都有不同的类型。
现在我有一个方法,基本上接受字段名称作为参数并返回它的值,如下所示:
get(key: Extract<keyof Config, string>): any {
// this.config is my Config class
return this.config[key];
}
这个参数效果很好,我的
Config
类中的所有字段名称都会自动完成,但基于此,我想推断这个函数的返回类型。因此,假设我想要获取的字段具有 DbConfig
类型,当我调用此 get
方法时,我希望返回也为 DbConfig
,并且不要像我在示例中那样使用任何类型上面。
这可能吗?如果是的话,该怎么做?
您可以将
key
参数用作泛型类型 K
。然后,K
可用于为返回类型索引 Config
。
function get<K extends keyof Config & string>(key: K): Config[K] {
return config[key]
}