Minha função tem um parâmetro genérico T
e outro parâmetro restrito com base no passado T
.
Exemplo:
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'
Meu objetivo é, em última análise, passar um objeto, restringir outros parâmetros com base em seu tipo e inferir seus valores quando eles são passados para restringir ainda mais outros parâmetros:
- Parâmetros passados inferem
T
e restringemK
- O segundo parâmetro passado infere
K
e restringeV
- etc.