版博士V2.0程序
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

56 linhas
1.4 KiB

  1. /**
  2. * @since 2.11.0
  3. */
  4. import { Option } from './Option'
  5. import { Either } from './Either'
  6. /**
  7. * @since 2.11.0
  8. */
  9. export interface Refinement<A, B extends A> {
  10. (a: A): a is B
  11. }
  12. /**
  13. * Returns a `Refinement` from a `Option` returning function.
  14. * This function ensures that a `Refinement` definition is type-safe.
  15. *
  16. * @category lifting
  17. * @since 2.11.0
  18. */
  19. export declare const fromOptionK: <A, B extends A>(getOption: (a: A) => Option<B>) => Refinement<A, B>
  20. /**
  21. * @category lifting
  22. * @since 2.11.0
  23. */
  24. export declare const fromEitherK: <A, B extends A>(getEither: (a: A) => Either<unknown, B>) => Refinement<A, B>
  25. /**
  26. * @category constructors
  27. * @since 2.11.0
  28. */
  29. export declare const id: <A>() => Refinement<A, A>
  30. /**
  31. * @since 2.11.0
  32. */
  33. export declare const not: <A, B extends A>(refinement: Refinement<A, B>) => Refinement<A, Exclude<A, B>>
  34. /**
  35. * @since 2.11.0
  36. */
  37. export declare const or: <A, C extends A>(
  38. second: Refinement<A, C>
  39. ) => <B extends A>(first: Refinement<A, B>) => Refinement<A, C | B>
  40. /**
  41. * @since 2.11.0
  42. */
  43. export declare const and: <A, C extends A>(
  44. second: Refinement<A, C>
  45. ) => <B extends A>(first: Refinement<A, B>) => Refinement<A, B & C>
  46. /**
  47. * @since 2.11.0
  48. */
  49. export declare const zero: <A, B extends A>() => Refinement<A, B>
  50. /**
  51. * @since 2.11.0
  52. */
  53. export declare const compose: <A, B extends A, C extends B>(
  54. bc: Refinement<B, C>
  55. ) => (ab: Refinement<A, B>) => Refinement<A, C>