我的函数有一个通用参数T
和另一个基于传递的T
.
例子:
const foo = {
a: 'hello',
b: 'world',
} as const
function bar<T extends object, K extends keyof T>(obj: T, key1: K, key2: K) {};
bar(foo, 'a', 'b') // No error, even though key1 should narrow K to 'a'. K stays 'a'|'b'
我的目标最终是传递一个对象,根据其类型约束其他参数,并在传递它们时推断它们的值以进一步约束其他参数:
- 传递的参数推断
T
和约束K
- 传递第二个参数推断
K
和约束V
- ETC。