Guest User

Untitled

a guest
Feb 22nd, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. function arrayDestruct
  2. (obj: any): never[];
  3. function arrayDestruct<T, K0 extends keyof T>
  4. (obj: T, k0: K0): [T[K0]];
  5. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T>
  6. (obj: T, k0: K0, k1: K1): [T[K0], T[K1]];
  7. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T>
  8. (obj: T, k0: K0, k1: K1, k2: K2): [T[K0], T[K1], T[K2]];
  9. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T>
  10. (obj: T, k0: K0, k1: K1, k2: K2): [T[K0], T[K1], T[K2]];
  11. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T>
  12. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3): [T[K0], T[K1], T[K2], T[K3]];
  13. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  14. K4 extends keyof T>
  15. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4): [T[K0], T[K1], T[K2], T[K3], T[K4]];
  16. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  17. K4 extends keyof T, K5 extends keyof T>
  18. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): [T[K0], T[K1], T[K2], T[K3], T[K4], T[K5]];
  19. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  20. K4 extends keyof T, K5 extends keyof T, K6 extends keyof T>
  21. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6):
  22. [T[K0], T[K1], T[K2], T[K3], T[K4], T[K5], T[K6]];
  23. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  24. K4 extends keyof T, K5 extends keyof T, K6 extends keyof T, K7 extends keyof T>
  25. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7):
  26. [T[K0], T[K1], T[K2], T[K3], T[K4], T[K5], T[K6], T[K7]];
  27. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  28. K4 extends keyof T, K5 extends keyof T, K6 extends keyof T, K7 extends keyof T, K8 extends keyof T>
  29. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, k8: K8):
  30. [T[K0], T[K1], T[K2], T[K3], T[K4], T[K5], T[K6], T[K7], T[K8]];
  31. function arrayDestruct<T, K0 extends keyof T, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T,
  32. K4 extends keyof T, K5 extends keyof T, K6 extends keyof T, K7 extends keyof T, K8 extends keyof T,
  33. Krest extends keyof T>
  34. (obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, k8: K8, ...krest: Krest[]):
  35. T[K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8 | Krest][] & {
  36. 0: T[K0], 1: T[K1], 2: T[K2], 3: T[K3], 4: T[K4], 5: T[K5],
  37. 6: T[K6], 7: T[K7], 8: T[K8], 9: T[Krest]
  38. };
  39. function arrayDestruct<T, K extends keyof T>(obj: T, ...keys: K[]): T[K][] {
  40. return keys.map(k => obj[k]);
  41. }
Add Comment
Please, Sign In to add comment