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

‹strong›Статическая типизация‹/strong›

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

‹code›function add(a, b) {
return a + b;
}

console.log(добавить("1", 2)); // Вывод: «12»‹/код›

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

В TypeScript вы можете объявлять типы параметров, используя синтаксис имя_параметра: тип. Например, функцию добавления можно переписать на TypeScript следующим образом:

‹code›function add(a: number, b: number): number {
return a + b;
}

console.log(добавить("1", 2)); // Ошибка: Аргумент типа «1» нельзя присвоить параметру типа «число».‹/code›

В этом примере параметры a и b объявлены как числа, что гарантирует, что функции могут быть переданы только числа. Если вы попытаетесь передать в функцию строку и число, компилятор TypeScript обнаружит ошибку и сообщит о ней во время компиляции.

Классы и интерфейсы

Еще одним преимуществом TypeScript перед JavaScript является поддержка классов и интерфейсов. Классы предоставляют способ определения многократно используемых чертежей для объектов, а интерфейсы предоставляют способ определения контрактов для объектов.

Рассмотрим следующий код JavaScript, определяющий объект Person с помощью функции-конструктора:

‹code›function Person(name, age) {
this.name = name;
this.age = age;
}

Person.prototype.greet = function() {
console.log(`Здравствуйте, меня зовут ${this.name}, мне ${this.age} лет.`);
}

const john = new Person("John", 30);
john.greet(); // Вывод: «Здравствуйте, меня зовут Джон, мне 30 лет».‹/code›

В TypeScript вы можете определить класс Person с помощью ключевого слова class и указать его свойства и методы, используя синтаксис propertyName: Type и methodName(): ReturnType. Например:

‹код›класс Person {
имя: строка;
возраст: число;

конструктор(имя: строка, возраст: число) {
this.name = имя;
this.age = возраст;
}

greet() {
console.log(`Здравствуйте, меня зовут ${this.name}, мне ${this.age} лет.`);
}
}

const john = new Person("John", 30);
john.greet(); // Вывод: «Здравствуйте, меня зовут Джон, мне 30 лет».‹/code›

В этом примере класс Person имеет свойство name типа string, свойство age типа number и метод приветствия, который записывает приветствие в консоль.

С другой стороны, интерфейсы позволяют вам определять контракты для объектов без указания их реализации. Например, рассмотрим следующий интерфейс, определяющий объект Person:
‹code›
interface Person {
name: string;
age: number;
greet() : пустота;
}

const john: Person = {
имя: «Джон»,
возраст: 30,
Greet() {
console.log(`Здравствуйте, меня зовут ${this. name} и мне ${this.age} лет.`);
}
};‹/code›

Джон.приветствовать(); // Вывод: «Здравствуйте, меня зовут Джон, мне 30 лет».

В этом примере интерфейс `Person` определяет свойство `name` типа `string`, свойство `age` типа `number` и метод `greet`, который не принимает аргументов и ничего не возвращает. Объект john соответствует интерфейсу Person, поэтому его можно присвоить переменной типа Person.

‹сильный›Вывод‹/сильный›

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

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