Список задач по 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
    Record
  • 011who is online
    PartialRecord
  • 012state
    Promise
  • 013total income
    Record
  • 014http router
    Union Type
  • 015query params
  • 016like dislike
    GenericUnion Type
  • 017for each
    Genericvoid
  • 018some
    Generic
  • 019sort
    Generic
  • 020group by equality
    Generic
  • 021map
    Multiple Generics
  • 022zip
    Multiple Generics
  • 023min
    Generic
  • 024map group by
    MapMultiple Generics
  • 025map group by advanced
    MapMultiple Generics
  • 026multi predicate
    GenericFunction
  • 027extract key
    Multiple GenericsGeneric Extendskeyof
  • 028remove key
    keyofGeneric ExtendsOmit
  • 029keys projection
    keyofGeneric ExtendsPick
  • 030once
    FunctionUnion Type
  • 031memo
    MapBang!
  • 032spy
    Generic ExtendsType Indexing
  • 033super power frequency
    MapMultiple Genericsas unknown as
  • 034increment age
    GenericGeneric Extends
  • 035plural
    GenericGeneric ExtendsTupleReturnType
  • 036where
    Partial
  • 037object group by
    IterableGeneric
  • 038select
    Generickeyof
  • 039optional
    Multiple Generics
  • 040cache
    Multiple GenericsMapReturnType
  • 041reduce
    OverloadingMultiple Generics
  • 042compose
    OverloadingMultiple Generics
  • 043promisify
    Overloading
  • 044filter
    GenericType Guard
  • 045bifurcate
    GenericType GuardTuple
  • 046every
    Type Guard
  • 047polling
    Type Guard
  • 048array map
    Global Type
  • 049array from
    Generic
  • 050pipe
    Global Type
  • 051sort by
    Genericneverkeyof
  • 052camel case
    Template Literal Types
  • 053csv parser
    Template Literal Typesinfer
  • 054object get
    Template Literal Typesinfer
  • 055flatten obj
    Template Literal Typesnever
  • 056all
    AwaitedPromise
  • 057promise pool
    infer
  • 058flatten arr