TypeScript: быстрое погружение для разработчиков владеющих другими языками

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

Статическая типизация

В TypeScript типы данных указываются явно, что позволяет избегать ошибок связанных с неправильным использованием типов переменных.

Пример:

let age: number = 25;
let fullName: string = "John Smith";

Интерфейсы

Интерфейсы в TypeScript определяют контракт для объектов, указывая, какие свойства и методы должны быть предоставлены объектом.

Пример:

interface Person {
  firstName: string;
  lastName: string;
  age: number;
  greet(): void;
}

const john: Person = {
  firstName: "John",
  lastName: "Doe",
  age: 30,
  greet() {
    console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
  },
};

Классы

TypeScript поддерживает объектно-ориентированное программирование с использованием классов, наследования и полиморфизма.

Пример:

class Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name);
  }

  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog("Rex");
dog.speak(); // Rex barks.

Обобщения (Generics)

Обобщения позволяют создавать универсальные компоненты, которые могут работать с различными типами данных.

Пример:

function identity<T>(arg: T): T {
  return arg;
}

let numberIdentity = identity<number>(42); // тип: number
let stringIdentity = identity<string>("Hello"); // тип: string

Пример:

function identity<T>(arg: T): T {
  return arg;
}

let numberIdentity = identity<number>(42); // тип: number
let stringIdentity = identity<string>("Hello"); // тип: string

Модули

TypeScript поддерживает модульную организацию кода, что позволяет разбивать код на множество файлов.

Пример (math.ts):

export function add(x: number, y: number): number {
  return x + y;
}

export function subtract(x: number, y: number): number {
  return x - y;
}

Пример (app.ts):

import { add, subtract } from "./math";

console.log(add(5, 3)); // 8
console.log(subtract(5, 3)); // 2

Декораторы

Декораторы предоставляют способ добавления аннотаций и метаданных к классам, методам, свойствам и параметрам. Они являются экспериментальной функцией и могут быть использованы с опцией компилятора --experimentalDecorators.

Пример:

function log(target: any, propertyName: string | symbol) {
  console.log(`Property "${propertyName.toString()}" has been accessed.`);
}

class MyClass {
  @log
  myProperty: string = "Hello";
}

const myInstance = new MyClass();
console.log(myInstance.myProperty); // Вывод: Property "myProperty" has been accessed.

Работа с промисами и асинхронным кодом

TypeScript поддерживает промисы (Promise) и асинхронные функции (async/await), что упрощает работу с асинхронным кодом.

Пример:

async function fetchData(url: string): Promise<string> {
  const response = await fetch(url);
  const data = await response.text();
  return data;
}

fetchData("https://api.example.com/data")
  .then((data) => console.log(data))
  .catch((error) => console.error(error));

Теперь, когда вы знакомы с основами TypeScript, я рекомендую начать с практических упражнений, чтобы закрепить полученные знания. Также полезно изучить документацию TypeScript на официальном сайте (https://www.typescriptlang.org/) для более глубокого понимания языка и его возможностей.

Рейтинг
( 14 оценок, среднее 3.21 из 5 )
Понравилась статья? Поделиться с друзьями: