Optional,联合转交叉

发布时间:2024年01月24日
type Optional<T,K extends keyof T> = Omit<T,K> & Partial<Pick<T,K>>

interface WindowState {
    isMaximized: boolean;
    isFullScreen: boolean;
    data: string;
    count: number;
}

type CreateWindowState = Optional<WindowState, 'isMaximized' | 'isFullScreen'>;
//CreateWindowState相当于如下的OptionalWindowState
 interface OptionalWindowState {
    isMaximized?: boolean;
    isFullScreen?: boolean;
    data: string;
    count: number;
 }

type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
type A = UnionToIntersection<{ a: (v: number) => void } | { b: (v: string) => void }>;
type B = UnionToIntersection<{a:string} | {b:number}>

文章来源:https://blog.csdn.net/m0_47999208/article/details/135823076
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。