В этой главе мы узнаем об интерфейсах и модулях в TypeScript.
Интерфейсы
Интерфейс — это способ определить контракт в вашем коде. Он определяет структуру и типы свойств и методов, которые должен иметь класс или объект. Это позволяет вам писать более многоразовый и типобезопасный код.
Допустим, у нас есть функция, которая принимает объект со свойством name:
function sayHello(person: { name: string }) { console.log(`Hello, ${person.name}!`); }
Эта функция работает только с объектами, имеющими свойство name
. Но что, если мы хотим сделать его более универсальным, чтобы он мог принимать объекты с разными свойствами, если у них есть свойство name
?
interface Person { name: string; } function sayHello(person: Person) { console.log(`Hello, ${person.name}!`); }
Теперь мы определили интерфейс Person
со свойством name
и используем его как тип параметра в функции sayHello
. Таким образом, мы можем передать любой объект со свойством name
, а TypeScript гарантирует, что функция работает только с объектами, которые соответствуют интерфейсу Person
.
Модули
Модули в TypeScript позволяют организовать код в логические блоки. Модуль может содержать классы, функции, интерфейсы и другие модули. Вы можете использовать модули для создания повторно используемого кода, который можно легко импортировать и использовать в других файлах.
Допустим, у нас есть файл math.ts
, который экспортирует некоторые функции, связанные с математикой:
export function add(a: number, b: number) { return a + b; } export function subtract(a: number, b: number) { return a - b; }
Чтобы использовать эти функции в другом файле, нам нужно их импортировать:
import { add, subtract } from './math'; console.log(add(2, 3)); // 5 console.log(subtract(5, 2)); // 3
В этом примере мы импортируем функции add
и subtract
из файла math.ts
с помощью оператора import
. Затем мы можем использовать эти функции в нашем коде.
Вы также можете использовать оператор export default
для экспорта значения по умолчанию из модуля:
export default function sayHello(name: string) { console.log(`Hello, ${name}!`); }
Чтобы импортировать значение по умолчанию, вы можете использовать оператор import
без фигурных скобок:
import sayHello from './greetings'; sayHello('John'); // Hello, John
В этом примере мы экспортируем функцию sayHello
в качестве значения модуля по умолчанию и импортируем ее с помощью оператора import
без фигурных скобок.