【发布时间】:2020-03-21 13:43:48
【问题描述】:
我正在尝试编写一个通用条件类型。我的尝试是:
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))
我该怎么做?
【问题讨论】:
标签: typescript typescript-generics conditional-types