Введение:

TypeScript — это надмножество JavaScript со статической типизацией, которое предоставляет дополнительные аннотации типов и другие функции, повышающие качество и удобство сопровождения кода. Несмотря на его популярность и широкое распространение, многие инженеры-программисты до сих пор не осознают его полного потенциала. В этой статье мы рассмотрим некоторые из менее известных советов и приемов, которые помогут вам поднять свои навыки работы с TypeScript на новый уровень.

Условные типы
Условные типы — это мощная функция, позволяющая указать тип выражения на основе значения другого типа. Рассмотрим следующий пример:

type IsString<T> = T extends string ? true : false;

function printType<T>(arg: T) {
  if (typeof arg === "string") {
    console.log("The type is a string");
  } else {
    console.log("The type is not a string");
  }
}

const myString = "Hello, World!";
const myNumber = 42;

printType<IsString<typeof myString>>(myString); // The type is a string
printType<IsString<typeof myNumber>>(myNumber); // The type is not a string

Сопоставленные типы

Сопоставленные типы — это способ применить набор преобразований к каждому свойству в типе объекта. Рассмотрим следующий пример:

type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};

type Person = {
  name: string;
  age: number;
};

const person: Readonly<Person> = {
  name: "John Doe",
  age: 32,
};

person.name = "Jane Doe"; // Error: Cannot assign to 'name' because it is a read-only property

Функции высшего порядка

Функции высшего порядка — это функции, которые либо принимают другие функции в качестве аргументов, либо возвращают их в качестве результата. Рассмотрим следующий пример:

type FilterFunction<T> = (element: T) => boolean;

function filter<T>(array: T[], callback: FilterFunction<T>) {
  const result = [];
  for (const element of array) {
    if (callback(element)) {
      result.push(element);
    }
  }
  return result;
}

const numbers = [1, 2, 3, 4, 5];

const evenNumbers = filter(numbers, (number) => number % 2 === 0);

console.log(evenNumbers); // [2, 4]

Вывод:

Это всего лишь несколько примеров многих мощных функций, которые может предложить TypeScript. Независимо от того, являетесь ли вы опытным инженером-программистом или только начинаете, потратьте время на изучение этих советов и приемов, которые помогут вам писать более эффективный и удобный в сопровождении код. С его растущей популярностью и широким распространением TypeScript является ценным инструментом в вашем наборе инструментов для разработки.