打字稿根据其键推断出对象的 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
参数用作通用类型 K
。 K
然后可用于为 return 类型索引 Config
。
function get<K extends keyof Config & string>(key: K): Config[K] {
return config[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
参数用作通用类型 K
。 K
然后可用于为 return 类型索引 Config
。
function get<K extends keyof Config & string>(key: K): Config[K] {
return config[key]
}