我正在尝试编写通用条件类型。我的尝试是:
type Some<T> = T extends (...args: any[]) => any ? (p: T) => T : T | ((p: T) => T);
创建此类变量时
let v: Some<(() => void) | string | boolean>;
它的类型原来是
string | boolean | ((p: string) => string) | ((p: false) => false) | ((p: true) => true) | ((p: () => void) => () => void)
甚至boolean
类型也被分解为true
和false
类型。我实际上想要构建什么类型
string | boolean | ((p: string | boolean | (() => void)) => string | boolean | (() => void))
我应该怎么做?