I would like to define type that would allow only to use object keys that extends certain type:
interface Foo {
a: number
b: string;
}
const c: TKey<Foo, number> = "a" // ok
const c: TKey<Foo, number> = "b" // nok
I created TKey
as such:
type TKey<T extends object, V> = T[keyof T] extends V ? keyof T : never;
however it seems it always unwinds to never
- what I'm doing wrong?
Thank you!