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/) для более глубокого понимания языка и его возможностей.