альтернативи javascript

альтернативи javascript

  • можливість явного визначення типів (статична типізація);
  • підтримка використання повноцінних класів (як і традиційна об'єктно-орієнтована модель);
  • підтримка підключення модулів.

Node.js як TypeScript-компілятор

Користуватися ним просто. Створюємо простий файл з TypeScript-кодом (hello.ts):

Тепер компіляція. Набираємо в консолі:

Результатом буде файл hello.js:

Чи не забагато відмінностей, правда? Ну, тепер, коли у нас все працює, давайте розберемося з самим мовою.

анотації типів

Що нам може запропонувати TypeScript? Перш за все статичну типізацію, ми її спостерігали в першому ж прикладі:

Тип даних тут вказано після імені аргументу. Якщо ми передамо функції невірний тип даних, при компіляції буде видано попередження:

Можна вказати тип значення:

А можна взагалі нічого не вказувати - сувора типізація не є в TypeScript обов'язковою. Зате функції тепер можна задавати параметри за замовчуванням і вказувати необов'язкові аргументи:

Класи! Справжні класи!

Готові посперечатися, заради того все і затівалося. Так, в TypeScript існують «нормальні» класи і «нормальне» успадкування. Приклад TypeScript-класу:

Тут майже все, про що мріяли прихильники «традиційного» ООП: поля, методи, конструктор. Є і модифікатори доступу - спроба отримати значення User.id або встановити його значення безпосередньо, а не за допомогою спеціальних методів класу Person, зазнає невдачі (модифікатор public теж є, але його майже завжди можна опустити).

Статичні поля і властивості також підкоряються звичним законам - тобто доступні без створення екземпляра класу.

Тепер успадкування. Напишемо ще один клас, який розширює попередній:

Ми додали трохи - назва групи. У конструкторі ми методом super () викликаємо батьківський конструктор.

Можна перевизначити батьківський метод:

інтерфейси

Так, крім класів, в TypeScript існують і ці корисні мовні конструкції. Нижче приклад простого інтерфейсу і використовує його функції:

Модулі в TypeScript організовані за стандартами CommonJS і EcmaScript6. Їх завдання - інкапсуляція бізнес-логіки в окремій конструкції зі своїм простором імен ... Хоча, що пояснювати, що таке модулі в кінці статті про Node.js? Краще покажу на практиці, як вони реалізовані в TypeScript.

Нічого не нагадує? Хоча що, власне, нагадувати, це не подібність, це той же самий механізм, який ми використовуємо, наприклад, в Node.js. При компіляції отримуємо наступне:

Схожі статті