@spaced-out/ui-design-system
Version:
Sense UI components library
30 lines (25 loc) • 1.16 kB
TypeScript
declare module 'flow-to-typescript-codemod' {
export declare namespace Flow {
// Abstract Component utility type
// https://flow.org/en/docs/react/types/#toc-react-abstractcomponent
type AbstractComponent<Config, Instance = unknown> = React.ComponentType<
React.PropsWithoutRef<Config> & React.RefAttributes<Instance>
>;
// Class utility type
// https://flow.org/en/docs/types/utilities/#toc-class
// https://github.com/piotrwitek/utility-types/blob/df2502ef504c4ba8bd9de81a45baef112b7921d0/src/utility-types.ts#L158
type Class<T> = new (...args: any[]) => T;
// $Diff utility type
// https://flow.org/en/docs/types/utilities/#toc-diff
// https://github.com/piotrwitek/utility-types/blob/df2502ef504c4ba8bd9de81a45baef112b7921d0/src/utility-types.ts#L50
type Diff<T extends U, U extends object> = Pick<
T,
SetComplement<keyof T, keyof U>
>;
}
// Helper types
type SetComplement<A, B extends A> = A extends B ? never : A;
type OmitDefaultProps<T, D> = Omit<T, keyof D> &
Partial<Pick<T, Extract<keyof T, keyof D>>> &
Partial<Pick<D, Extract<keyof D, keyof T>>>;
}