У меня есть следующий тип - когда определено P
, функция должна принимать параметр типа P
и возвращаемое значение типа P
. В противном случае он не должен принимать никаких параметров и возвращать void
. По некоторым причинам это не работает для логического значения и:
- Я не понимаю, почему.
- Есть ли способ заставить его работать для логического значения без явного добавления дополнительного условия, когда
P extends boolean
(как это работает).
export type Test<P = void> = P extends void
? () => void
: (payload: P) => P
const test0: Test = () => {} // compiles
const test1: Test<number> = (payload: number): number => payload // compiles
const test2: Test<boolean> = (payload: boolean): boolean => payload // doesn't compile