Перейти до основного вмісту

Створення проєкту на TypeScript, модулі

Крок 1. Ініціалізація проєкту

Спочатку створимо нову теку та ініціалізуємо Node.js-проєкт за допомогою npm:

mkdir my-typescript-app
cd my-typescript-app
npm init -y

Крок 2. Встановлення TypeScript

Додаємо TypeScript як dev-залежність:

npm install --save-dev typescript ts-node @types/node

- typescript — компілятор TypeScript
- ts-node — дозволяє запускати TS-файли без попередньої компіляції
- @types/node — типи для стандартних Node.js API

Крок 3. Створення файлу tsconfig.json

Ініціалізуємо конфігурацію TypeScript:

npx tsc --init

Приклад файлу tsconfig.json

{
  "compilerOptions": {
    "target": "ES2020",              // Версія JS у вихідному коді
    "module": "CommonJS",            // Система модулів (для Node.js)
    "rootDir": "src",                // Вхідна папка з TypeScript-кодом
    "outDir": "dist",                // Куди компілюється код JS
    "strict": true,                  // Жорсткий режим типізації
    "esModuleInterop": true,         // Сумісність з CommonJS модулями
    "skipLibCheck": true,            // Пропуск перевірки типів у залежностях
    "forceConsistentCasingInFileNames": true // Перевірка регістру у назвах файлів
  },
  "include": ["src"],                 // Які файли компілювати
  "exclude": ["node_modules"]         // Що ігнорувати
}

Крок 4. Структура проєкту

my-typescript-app/
 ├─ node_modules/
 ├─ src/
 │   └─ index.ts
 ├─ dist/          (буде створена після компіляції)
 ├─ package.json
 └─ tsconfig.json

Крок 5. Приклад коду index.ts

const greet = (name: string): string => {
  return `Привіт, ${name}!`;
};

console.log(greet("TS Developer"));

Крок 6. Компіляція та запуск

Зкомпілювати код у JS:

npx tsc

Запустити напряму з ts-node:

npx ts-node src/index.ts

Крок 7. Налаштування скриптів у package.json

{
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js",
    "dev": "ts-node src/index.ts"
  }
}

Після цього ці скрипти можна викликати за допомогою npm run, наприклад:


npm run dev

Або через yarn, pnpm чи інший пакетний менеджер.

Створення tsconfig.json — ключовий етап у будь-якому TypeScript-проєкті. Він визначає правила компіляції та допомагає підтримувати чисту структуру коду. Для Java-розробників це можна порівняти з pom.xml (Maven) або build.gradle, але з акцентом на типізацію та вихідний код.

Що таке модулі?

У Node.js та TypeScript кожен файл можна розглядати як окремий модуль. Модулі дозволяють структурувати код, розділяти його на частини і повторно використовувати у різних частинах застосунку.

Експорт у TypeScript

Експортувати можна функції, змінні, класи, інтерфейси.

// math.ts
export const add = (a: number, b: number): number => a + b;

export function multiply(a: number, b: number): number {
  return a * b;
}

export class Calculator {
  divide(a: number, b: number): number {
    return a / b;
  }
}

Імпорт у TypeScript

// index.ts
import { add, multiply, Calculator } from "./math";

console.log(add(2, 3)); // 5
console.log(multiply(4, 5)); // 20

const calc = new Calculator();
console.log(calc.divide(10, 2)); // 5

Експорт за замовчуванням (default export)

Модуль може експортувати один об’єкт за замовчуванням.

// logger.ts
export default function log(message: string): void {
  console.log(`[LOG]: ${message}`);
}
// index.ts
import log from "./logger";

log("Привіт з Node.js + TypeScript!");

Перейменування імпорту

Можна імпортувати під іншим ім’ям:

// index.ts
import { add as sum } from "./math";

console.log(sum(7, 8)); // 15

Експорт з повторним використанням (re-export)

Можна створювати централізовані "модулі-барелі", які експортують усе з кількох файлів.

// utils/index.ts
export * from "../math";
export { default as log } from "../logger";
// index.ts
import { add, log } from "./utils";

console.log(add(1, 2));
log("Використовуємо реекспорт");

Відмінності між CommonJS та ES Modules

  • CommonJS (стандарт Node.js до версії 12) — використовує require / module.exports
  • ES Modules (сучасний стандарт) — використовує import / export
// CommonJS приклад
const fs = require("fs");
module.exports = { myFunc };

// ES Module приклад
import fs from "fs";
export const myFunc = () => {};

Налаштування у tsconfig.json

У файлі tsconfig.json важливо вказати систему модулів:

{
  "compilerOptions": {
    "module": "CommonJS",   // для Node.js
    "target": "ES2020"
  }
}

Модульність у TypeScript аналогічна пакетам у Java: import/exportimport у Java. Використання ES Modules (import) є рекомендованим підходом для сучасних проєктів, тоді як CommonJS застосовується переважно у старих системах.

Коментарі

Популярні публікації

Шпаргалка по базових командах PostgreSQL

1. Підключення до PostgreSQL через командний рядок: psql -h <host> -p <port> -U <username> -d <database> 2. Підключення до бази без параметрів (якщо користувач і база мають однакове ім’я): psql 3. Показати список усіх баз даних: \l 4. Підключитися до іншої бази даних: \c <database_name> 5. Показати список таблиць у поточній базі: \dt 6. Показати всі об'єкти (таблиці, індекси, секвенції): \d 7. Показати таблиці з усіх схем: \dt *.* 8. Переглянути структуру конкретної таблиці: \d <table_name> 9. Виконати SQL-запит (приклад): SELECT * FROM users; 10. Вийти з psql: \q 11. Створити нову базу даних: CREATE DATABASE mydb; 12. Створити нову таблицю: CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE ); 13. Додати новий запис: INSERT INTO users (name, email) VALUES ('Іван', 'ivan@example.com'); 14. Оновити дані в таблиці: UPDATE users SET name = 'Петро' WH...

Основи GLSL

Що таке GLSL? GLSL (OpenGL Shading Language) – мова програмування шейдерів для OpenGL. Використовується для написання vertex, fragment, geometry та інших шейдерів, що працюють на GPU. Оголошення версії #version 330 core Вказує версію GLSL. Наприклад, 330 core відповідає OpenGL 3.3. Вхідні та вихідні змінні layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; out vec3 FragPos; in – вхідні атрибути (vertex shader). out – вихідні змінні (vertex shader) або фінальний колір (fragment shader). Основні типи даних float, int, bool vec2, vec3, vec4 mat2, mat3, mat4 sampler2D (текстури) Тип Опис Приклади використання vec2 Двокомпонентний вектор з типом float. - Текстурні координати (UV) - 2D позиції - Швидкість у 2D vec3 Трикомпонентний вектор з типом float. - Координати позицій у 3D - Нормалі - Колір у форматі RGB vec4 Чотирикомпо...

Атоми в мові програмування Elixir

Атоми в Elixir Атоми є фундаментальною концепцією в Elixir , що відіграє ключову роль у створенні надійних та масштабованих систем. В Elixir це специфічний тип даних, який є константою , незмінною , ідентифікованою за своїм ім'ям . Отже, атом в Elixir — це іменована константа, що представляє себе. Уявіть, що ви даєте унікальне ім'я певній речі, і це ім'я завжди посилається саме на цю річ, і ніколи на щось інше. Наприклад, атом :ok завжди буде означати саме успішне завершення операції, а не якесь інше значення. Технічно, атоми є похідними від чисел . Кожен унікальний атом зберігається у таблиці атомів, і йому присвоюється унікальний цілочисельний ідентифікатор. Це робить їх надзвичайно ефективними для порівняння: замість порівняння рядків (що є повільною операцією), Elixir порівнює цілочисельні ідентифікатори. Переваги та особливості використання атомів Переваги атомів: Ефективність. Завдяки своєму числовому представленню, порівняння атомів є дуже швидким. Це осо...

Встановлення PostgreSQL на Ubuntu-сервер

Встановлення Оновлюємо пакети та встановлюємо PostgreSQL: sudo apt update sudo apt install -y postgresql postgresql-contrib Перевіряємо статус сервісу: sudo systemctl status postgresql Якщо PostgreSQL не запущений, запустимо його: sudo systemctl start postgresql sudo systemctl enable postgresql Налаштування безпеки Зміна пароля: sudo -u postgres psql У консолі PostgreSQL: ALTER USER postgres PASSWORD 'міцний_пароль'; \q \q - вихід з консолі. Список основних команд для роботи з PostgreSQL можна переглянути за посиланням. За замовчуванням PostgreSQL слухає localhost (127.0.0.1). Щоб дозволити доступ із зовнішніх машин, редагуємо конфігурацію: sudo nano /etc/postgresql/17/main/postgresql.conf (замість 17 вкажи версію PostgreSQL, яку встановлено) Шукаємо рядок: #listen_addresses = 'localhost' та замінюємо на listen_addresses = '*' Зберігаємо (Ctrl + X, Y, Enter). Тепер редагуємо pg_hba.conf: sudo nano /etc/postgresql/17/main/pg_hba.conf...

Прості типи даних в Elixir

Мова Elixir має низку простих (примітивних) типів даних, які часто використовуються в повсякденному програмуванні. Числа Elixir підтримує цілі (integer) та дійсні числа (float). # Цілі числа a = 42 b = -7 # Дійсні числа c = 3.14 d = -0.001 Булеві значення Elixir має два булевих значення: true та false . x = true y = false z = x and y # false Атоми Атоми — це константи з іменем, що починається з двокрапки. Вони широко використовуються, наприклад, для імен параметрів або станів. :ok :error :running :elixir_is_fun Рядки Рядки в Elixir — це двійкові дані з кодуванням UTF-8, оголошуються в подвійних лапках. name = "Pavlo" greeting = "Привіт, #{name}!" Nil Nil — це спеціальне значення, що позначає "відсутність значення". value = nil is_nil(value) # true Бінарні дані та байти Бінарні дані оголошуються в подвійних лапках або як бінарні літерали. string = "Привіт" # це рядок, але також бінарні дані binary = ...