有没有办法将联合类型转换为交集类型:
type FunctionUnion = () => void | (p: string) => void
type FunctionIntersection = () => void & (p: string) => void
Run Code Online (Sandbox Code Playgroud)
我想应用转换FunctionUnion来获取FunctionIntersection
是否可以检查给定类型是否为联合?
type IsUnion<T> = ???
Run Code Online (Sandbox Code Playgroud)
为什么我需要这个:在我的代码中,我有唯一的情况,当一些收到的类型可以是一个联合.我用分配条件类型处理它.但是,对于查看此代码的人来说,首先使用DCT的原因并不明显.所以我希望它明确如下:IsUnion<T> extends true ? T extends Foo ...
我做了几次尝试UnionToIntersection,没有结果.我也想出了这个:
type IsUnion<T, U extends T = T> =
T extends any ?
(U extends T ? false : true)
: never
Run Code Online (Sandbox Code Playgroud)
它给false了非工会,但由于某种原因它给boolean工会......我不知道为什么.我也infer从T 尝试过U,没有成功.
PS我的用例可能看起来像某人不完美/正确/好,但无论如何标题中的问题已经出现,我想知道它是否可能(我觉得它是,但我很难自己搞清楚).
例如我有类型
type abc = 'a' | 'b' | 'c';
Run Code Online (Sandbox Code Playgroud)
如何使元组类型在编译时包含联合的所有元素?
type t = ['a','b', 'c'];
Run Code Online (Sandbox Code Playgroud) typescript ×3