Список задач по TypeScript

Как изучать TypeScript

Так же, как и изучение джаваскрипта, изучение тайпскрипта возможно только с помощью решения задач. При этом полезно взять уже знакомые задачи, чтобы сконцентрироваться на типах. Изучение TypeScript можно разделить на 4 части.

I. Базовые типы и интерфейсы. На данном этапе необходимо научиться описывать типы переменных, функций и классов. Для этого подойдут задачи на работу с данными: массивы, объекты и ООП.

II. Дженерики в функциях. Проще всего понять необходимость дженериков можно реализуя некоторые методы массивов. Грубо говоря, дженерики нужны для описания функций, которые могут работать со значениями разных типов. Лучше всего для практики подходят задачи на ФП.

III. Дженерики в типах. Для изучения чуть более продвинутых тем (conditional types, infer, never, unknown, utility types) можно решать задачи из списка Type Challenges. В них необходимо создать какой-то Generic Type, исполняемый код там не подразумевается.

IV. Применение в React. Для тайпскрипта в реакте применимо все что выше, но дополнительно можно написать несколько дженерик компонент. Например, компонент таблицы, которая умеет отображать массив произвольных объектов.

Как решать задачи

Список тем

Задачи

  • 001greet developers
    Interface Extends
  • 002tree sum
  • 003top methods
  • 004teams ranking
    Tuple
  • 005id to parent
  • 006sort by freq
    Record
  • 007find integer
    Function
  • 008brute force password
    Function
  • 009file system
    Function
  • 010hex to rgb
  • 011who is online
    PartialRecord
  • 012state
    Promise
  • 013total income
    Record
  • 014http router
    Union Type
  • 015query params
  • 016like dislike
    GenericUnion Type
  • 017for each
    Genericvoid
  • 018some
  • 019sort
    Generic
  • 020group by equality
    Generic
  • 021map
    Multiple Generics
  • 022zip
    Multiple Generics
  • 023map group by
    MapMultiple Generics
  • 024map group by advanced
    MapMultiple Generics
  • 025multi predicate
    GenericFunction
  • 026extract key
    Multiple GenericsGeneric Extendskeyof
  • 027remove key
    keyofGeneric ExtendsOmit
  • 028keys projection
    keyofGeneric ExtendsOmit
  • 029once
    FunctionUnion Type
  • 030memo
    MapBang!
  • 031spy
    Generic ExtendsType Indexing
  • 032super power frequency
    MapMultiple Genericsas unknown as
  • 033increment age
    GenericGeneric Extends
  • 034where
    Partial
  • 035object group by
    IterableGeneric
  • 036select
    Generic
  • 037optional
    Multiple Generics
  • 038cache
    Multiple GenericsMap
  • 039reduce
    OverloadingMultiple Generics
  • 040compose
    OverloadingMultiple Generics
  • 041promisify
    Overloading
  • 042filter
    GenericType Guard
  • 043bifurcate
    GenericType GuardTuple
  • 044every
  • 045polling
    Type Guard
  • 046array map
    Global Type
  • 047array from
    Generic
  • 048pipe
    Global Type
  • 049camel case
    Template Literal Types
  • 050csv parser
    Template Literal Typesinfer
  • 051object get
    Template Literal Typesinfer
  • 052flatten obj
    Template Literal Typesnever
  • 053all
    AwaitedPromise
  • 054promise pool
    infer
  • 055flatten arr