我有一个包含从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在这种情况下是一个变量,这不是一个有效的类型。
有没有办法做到这一点?
谢谢。
发布于 2019-09-02 19:52:04
你需要的是泛型:
interface ObjectWithGetter {
get<K extends keyof Values>(key: K): Values[K];
}
引入泛型参数K
允许您“重用”键来选择正确的返回类型。
https://stackoverflow.com/questions/57756467
复制相似问题