types.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { RouteComponentProps } from 'react-router-dom'
  2. export interface IRouteParams {
  3. organizationId?: string
  4. projectId?: string
  5. portalId?: string
  6. dashboardId?: string
  7. widgetId?: string
  8. displayId?: string
  9. slideId?: string
  10. viewId?: string
  11. scheduleId?: string
  12. userId?: string
  13. }
  14. export type RouteComponentWithParams = RouteComponentProps<IRouteParams, {}>
  15. export type IValue<T, U extends keyof T> = T[U]
  16. export type Diff<T extends object, U extends object> = Omit<
  17. T,
  18. Extract<keyof T, keyof U>
  19. >
  20. export type Compute<T extends any> = T extends () => void
  21. ? T
  22. : { [U in keyof T]: T[U] }
  23. export type Merge<T extends object, U extends object> = Compute<
  24. T & Omit<U, keyof T>
  25. >
  26. export type DeepPartial<T> = {
  27. [U in keyof T]?: T[U] extends object ? DeepPartial<T[U]> : T[U]
  28. }
  29. export type OverWrite<
  30. T extends object,
  31. U extends object,
  32. I = Diff<T, U> & Intersection<U, T>
  33. > = Pick<I, keyof I>
  34. export type Intersection<T extends object, U extends object> = Pick<
  35. T,
  36. Extract<keyof T, keyof U> & Extract<keyof U, keyof T>
  37. >
  38. export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<
  39. T,
  40. Exclude<keyof T, Keys>
  41. > &
  42. {
  43. [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>
  44. }[Keys]
  45. export interface IReduxActionStruct<T> {
  46. type?: string,
  47. payload: T
  48. }