Що таке Type Challenges? Type Challenges, це проект, який створив і підтримує Anthony Fu. Він (проект, але і, здається, Anthony теж) має на меті зібрати цікаві задачки з TypeScript. Особливістю цих задач є те, що їх потрібно розв’язувати пишучи виключно типи. Кожне завдання вимагає написання свого типу, який може використовувати відомі типи та засоби з системи типів TypeScript, але нічого більше.

Часом ці завдання можуть видатись важкими, особливо для новачків в TypeScript і типах загалом. На такий випадок, цей сайт буде збірником розв’язків та пояснень. Разом із поясненнями на сайті можна буде подивитись приклади коду розв’язків та знайти посилання, що допоможуть краще зрозуміти, що ж відбувалось в завданні. Якщо ви розв’язали завдання самостійно і ваш розв’язок відрізняється від того, що прикріплений тут – залишайте його в коментарях! Ми раді розглянути та подискутувати про такі речі.

У разі виникнення питань, пропозицій чи чогось, чим ви хотіли б допомогти проекту, будь ласка – дайте знати про це через issues.

До справи! Почніть з секції “Розігрів” і рухайтесь вперед пишучи типи, скільки буде сил. Порядок дій для кожного завдання наступний: спочатку переходите на “Завдання” і стараєтесь впоратись самотужки; якщо не виходить, повертайтесь до завдання в списку і ґрунтовно підгляньте в “Розв’язок”.

Наснаги вам у заглибленні в типи та до зустрічі в коментарях!

Розігрів

  1. Hello, World ⸱ Завдання Розв'язок

Легкий

  1. Awaited ⸱ Завдання Розв'язок
  2. Concat ⸱ Завдання Розв'язок
  3. Exclude ⸱ Завдання Розв'язок
  4. First of Array ⸱ Завдання Розв'язок
  5. If ⸱ Завдання Розв'язок
  6. Includes ⸱ Завдання Розв'язок
  7. Parameters ⸱ Завдання Розв'язок
  8. Pick ⸱ Завдання Розв'язок
  9. Push ⸱ Завдання Розв'язок
  10. Readonly ⸱ Завдання Розв'язок
  11. Length of Tuple ⸱ Завдання Розв'язок
  12. Tuple to Object ⸱ Завдання Розв'язок
  13. Unshift ⸱ Завдання Розв'язок

Середній

  1. Absolute ⸱ Завдання Розв'язок
  2. AnyOf ⸱ Завдання Розв'язок
  3. Append Argument ⸱ Завдання Розв'язок
  4. Append to Object ⸱ Завдання Розв'язок
  5. BEM Style String ⸱ Завдання Розв'язок
  6. Capitalize ⸱ Завдання Розв'язок
  7. Chainable Options ⸱ Завдання Розв'язок
  8. Chunk ⸱ Завдання Розв'язок
  9. Deep Readonly ⸱ Завдання Розв'язок
  10. Diff ⸱ Завдання Розв'язок
  11. Drop Char ⸱ Завдання Розв'язок
  12. EndsWith ⸱ Завдання Розв'язок
  13. Flatten ⸱ Завдання Розв'язок
  14. Flip Arguments ⸱ Завдання Розв'язок
  15. Flip ⸱ Завдання Розв'язок
  16. InOrder Traversal ⸱ Завдання Розв'язок
  17. IsNever ⸱ Завдання Розв'язок
  18. IsUnion ⸱ Завдання Розв'язок
  19. Join ⸱ Завдання Розв'язок
  20. KebabCase ⸱ Завдання Розв'язок
  21. Last of Array ⸱ Завдання Розв'язок
  22. LastIndexOf ⸱ Завдання Розв'язок
  23. Length of String ⸱ Завдання Розв'язок
  24. MapTypes ⸱ Завдання Розв'язок
  25. Merge ⸱ Завдання Розв'язок
  26. MinusOne ⸱ Завдання Розв'язок
  27. Mutable ⸱ Завдання Розв'язок
  28. AllCombinations ⸱ Завдання Розв'язок
  29. Number Range ⸱ Завдання Розв'язок
  30. ObjectEntries ⸱ Завдання Розв'язок
  31. Omit ⸱ Завдання Розв'язок
  32. OmitByType ⸱ Завдання Розв'язок
  33. PartialByKeys ⸱ Завдання Розв'язок
  34. Percentage Parser ⸱ Завдання Розв'язок
  35. Permutation ⸱ Завдання Розв'язок
  36. PickByType ⸱ Завдання Розв'язок
  37. Pop ⸱ Завдання Розв'язок
  38. Promise.all ⸱ Завдання Розв'язок
  39. Readonly 2 ⸱ Завдання Розв'язок
  40. Remove Index Signature ⸱ Завдання Розв'язок
  41. Replace ⸱ Завдання Розв'язок
  42. ReplaceAll ⸱ Завдання Розв'язок
  43. ReplaceKeys ⸱ Завдання Розв'язок
  44. RequiredByKeys ⸱ Завдання Розв'язок
  45. Get Return Type ⸱ Завдання Розв'язок
  46. Reverse ⸱ Завдання Розв'язок
  47. Shift ⸱ Завдання Розв'язок
  48. StartsWith ⸱ Завдання Розв'язок
  49. String to Union ⸱ Завдання Розв'язок
  50. Subsequence ⸱ Завдання Розв'язок
  51. Trim Right ⸱ Завдання Розв'язок
  52. Trim ⸱ Завдання Розв'язок
  53. Trim Left ⸱ Завдання Розв'язок
  54. Trunc ⸱ Завдання Розв'язок
  55. Tuple to Nested Object ⸱ Завдання Розв'язок
  56. Tuple to Union ⸱ Завдання Розв'язок
  57. Type Lookup ⸱ Завдання Розв'язок
  58. Unique ⸱ Завдання Розв'язок
  59. Without ⸱ Завдання Розв'язок
  60. Zip ⸱ Завдання Розв'язок

Складний

  1. CamelCase ⸱ Завдання Розв'язок

Екстремальний