BVB Source Codes

prettier Show apply.js Source code

Return Download prettier: download apply.js Source code - Download prettier Source code - Type:.js
  1. // @flow
  2.  
  3. function apply<Args: $ReadOnlyArray<mixed>, Ret>(
  4.   fn: (...Args) => Ret,
  5.   args: Args,
  6. ): Ret {
  7.   return fn(...args);
  8. }
  9.  
  10. function noRest(x: 'hi', y: 123): true { return true; }
  11. apply(noRest, ['hi', 123]); // No error
  12. apply(noRest, ['hi', 456]); // Error - 456 ~> 123
  13. apply(noRest, ['hi']); // Error - too few args
  14. apply(noRest, ['hi', 123, false]); // No error - too many args is fine
  15.  
  16. // withRest behaves the same as noRest except you can't pass too many args in
  17. function withRest(...rest: ['hi', 123]): true { return true; }
  18. apply(withRest, ['hi', 123]); // No error
  19. apply(withRest, ['hi', 456]); // Error - 456 ~> 123
  20. apply(withRest, ['hi']); // Error - too few args
  21. apply(withRest, ['hi', 123, false]); // Error - too many args
  22.  
  23. // Same thing, but with types instead of functions
  24. declare var applyType: <Args: $ReadOnlyArray<mixed>, Ret>(
  25.   fn: (...Args) => Ret,
  26.   args: Args,
  27. ) => Ret;
  28.  
  29. function noRest(x: 'hi', y: 123): true { return true; }
  30. applyType(noRest, ['hi', 123]); // No error
  31. applyType(noRest, ['hi', 456]); // Error - 456 ~> 123
  32. applyType(noRest, ['hi']); // Error - too few args
  33. applyType(noRest, ['hi', 123, false]); // No error - too many args is fine
  34.  
  35. // withRest behaves the same as noRest except you can't pass too many args in
  36. function withRest(...rest: ['hi', 123]): true { return true; }
  37. applyType(withRest, ['hi', 123]); // No error
  38. applyType(withRest, ['hi', 456]); // Error - 456 ~> 123
  39. applyType(withRest, ['hi']); // Error - too few args
  40. applyType(withRest, ['hi', 123, false]); // Error - too many args
  41.  
downloadapply.js Source code - Download prettier Source code
Related Source Codes/Software:
storybook - 2017-06-07
ionicons - The premium icon font for Ionic ... 2017-06-07
AsyncDisplayKit - Smooth asynchronous user interfaces for iOS apps. ... 2017-06-07
lottie-android - Render After Effects animations natively on Androi... 2017-06-07
parse-server - Parse-compatible API server module for Node/Expres... 2017-06-07
inferno - An extremely fast, React-like JavaScript library f... 2017-06-08
guetzli - Perceptual JPEG encoder 2017-06-08
cs-video-courses - List of Computer Science courses with video lectur... 2017-06-08
interviews - Everything you need to know to get the job. 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top