I'll start with example code.
toggle<K extends keyof T, V = T[K] extends any[] ? T[K] : never>(key: K, value: V): ...
I call this function on array-like properties. Since V
or T[K]
is array-like type (eg. string[]
), I want it to be just string
. Note that it can be any array type.
Is this possible to get just string
type out of V
?
interface ITest {
prop1: number;
prop2: number[];
}
T
is for example ITest
When key(K
) is prop2
, V
should be number
, else if key is prop1
, V
should be never
Behaviour:
toggle("prop2", "string")
type error
toggle("prop2", [1, 2])
type error
toggle("prop2", 1)
valid