我有一个对象,其中包含从get方法访问的值。我想输入get方法,以便它推断键的返回值。
我正在使用TS 3.6.2,并且使用了如下所示的使用重载的工作类型:
interface Values {
foo: FooType;
bar: BarType;
baz: BazType;
}
interface ObjectWithGetter {
get(key: 'foo'): Values['foo'];
get(key: 'bar'): Values['bar'];
get(key: 'baz'): Values['baz'];
}
似乎我应该可以将重载的get类型压缩为类似的内容:
get(key: keyof Values): Values[key];
但是在这种情况下,key是变量,这不是有效的类型。
有没有办法做到这一点?
谢谢。
答案 0 :(得分:2)
您需要的是泛型
interface ObjectWithGetter {
get<K extends keyof Values>(key: K): Values[K];
}
通过引入通用参数K
,您可以“重用”用于选择正确返回类型的键。