Основы TypeScript: типы данных, функции, классы
Расскажу тебе про очень интересный язык программирования - TypeScript. Этот язык был создан компанией Microsoft в 2012 году и с тех пор набирает все большую популярность.
Почему TypeScript так важен? Во-первых, он основан на JavaScript - самом популярном языке веб-разработки. А во-вторых, TypeScript добавляет в JS строгую типизацию и другие полезные возможности, которых не хватает в чистом JavaScript. Это делает код более структурированным и менее подверженным ошибкам. Многие крупные компании используют TypeScript для разработки сложных приложений - например, Microsoft, Google, Facebook.
Так что если ты уже знаком с JavaScript, изучение TypeScript поможет тебе стать более крутым разработчиком! Давай разберем основы этого языка.
Первые шаги в TypeScript
Чтобы начать писать код на TypeScript, нужно установить компилятор - программу, которая преобразует код TS в обычный JavaScript. Это можно сделать с помощью менеджера пакетов npm.
Для начала давай разберемся с переменными. Объявляются они так же, как и в JS:
let message = "Привет, Мир!";
Здесь мы объявили переменную message и присвоили ей значение "Привет, Мир!".
Важное отличие TypeScript в том, что переменные имеют строгую типизацию. Это означает, что мы должны указывать тип данных при объявлении:
let message: string = "Привет, Мир!";
Теперь TypeScript знает, что переменная message может содержать только значения типа string (строки). Это помогает избежать многих ошибок!
Типы данных в TypeScript
Давайте разберем основные типы данных в TypeScript:
let age: number = 17;
let isOpen: boolean = true;
let empty: null = null; let notDefined: undefined = undefined;
Как видишь, для каждого типа есть свое ключевое слово и допустимые значения. Указывая тип, мы сообщаем TypeScript, какие значения может принимать переменная.
Сложные типы данных
В TypeScript есть несколько полезных сложных типов. Рассмотрим некоторые из них:
Массивы (arrays) хранят упорядоченные коллекции значений:
let names: string[] = ["Вася", "Петя", "Маша"];
Здесь мы указали string[], что означает, что в массиве names могут быть только строки.
Кортежи (tuples) похожи на массивы, но каждый элемент имеет свой тип:
let user: [number, string] = [1, "Вася"];
В кортеже user первый элемент имеет тип number, а второй - string.
Перечисления (enums) представляют набор именованных констант:
enum Directions {
Up,
Down,
Left,
Right
}
let direction = Directions.Left;Эти сложные типы позволяют создавать гибкие и типобезопасные структуры данных в TypeScript.
Функции в TypeScript
Функции - это блоки кода, которые можно вызывать по имени. Вот пример функции в TypeScript:
function sum(a: number, b: number): number {
return a + b;
}
let total = sum(10, 20);Обрати внимание, что у функции sum указаны типы параметров (a: number, b: number) и тип возвращаемого значения number после двоеточия.
Это позволяет TypeScript проверять значения при вызове функции и избежать логических ошибок.
Объекты и интерфейсы
Объекты - это коллекции данных с именованными свойствами:
let user = {
name: "Вася",
age: 17,
isAdmin: false
};Чтобы определить форму объекта в TypeScript, используются интерфейсы:
interface User {
name: string;
age: number;
isAdmin: boolean;
}
let user: User = {
// ...
}Теперь переменная user должна соответствовать описанному в интерфейсе типу User. Это гарантирует, что в объекте будут требуемые свойства нужного типа.
Классы в TypeScript
Классы позволяют создавать объекты со связанным поведением. Например:
class User {
name: string;
constructor(name: string) {
this.name = name;
}
printName() {
console.log(this.name);
}
}
let user = new User("Вася");Здесь мы определили класс User с помощью ключевого слова class, указали свойство name и метод printName(). Класс создает объекты с этой структурой и поведением.
Наследование классов
Классы в TypeScript могут наследовать свойства и методы от других классов. Например, основной класс User:
class User {
// ...
}А класс Admin наследует от него:
class Admin extends User {
readMessages() {
// ...
}
}Класс Admin будет содержать всё от класса User плюс добавочный метод readMessages().
Интерфейсы классов
Интерфейсы можно использовать для описания структуры класса:
interface UserInterface {
getFullName();
}
class User implements UserInterface {
// ...
getFullName() {
return this.firstName + " " + this.lastName;
}
}Теперь User обязан реализовать метод getFullName() описанный в интерфейсе UserInterface. Это позволяет создавать контракты для классов.
Итог
TypeScript уже сейчас широко используется в больших проектах, и спрос на него, вероятно, будет только расти. Поэтому изучение TS - хороший способ улучшить свои навыки веб-разработки. Удачи в освоении TypeScript!