Для использования Noty в TypeScript необходимо установить саму библиотеку и соответствующие типы:
npm install noty
npm install --save-dev @types/noty
После установки импорт осуществляется стандартным синтаксисом ES6:
import Noty from 'noty';
Это позволяет TypeScript корректно распознавать типы и автодополнять свойства и методы уведомлений.
В Noty уведомление создается с помощью конструктора
new Noty({ ...options }), где options задают
все параметры уведомления:
const notification = new Noty({
text: 'Это уведомление',
type: 'success', // success, error, warning, info, alert
layout: 'topRight', // top, topLeft, topCenter, topRight, etc.
timeout: 3000, // миллисекунды до закрытия
progressBar: true,
closeWith: ['click', 'button'],
theme: 'mint'
});
После создания уведомление отображается вызовом метода
show():
notification.show();
Типы Noty позволяют TypeScript проверять
корректность значений type, layout и других
опций, снижая риск ошибок.
Интерфейс NotyOptions предоставляет полный набор опций
для уведомлений:
interface NotyOptions {
text?: string;
type?: 'alert' | 'success' | 'warning' | 'error' | 'info';
timeout?: number | false;
progressBar?: boolean;
layout?: 'top' | 'topLeft' | 'topCenter' | 'topRight' |
'center' | 'centerLeft' | 'centerRight' |
'bottom' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
theme?: string;
closeWith?: Array<'click' | 'button'>;
animation?: {
open?: string | Function;
close?: string | Function;
};
callbacks?: {
onShow?: (noty: Noty) => void;
onClose?: (noty: Noty) => void;
onClick?: (noty: Noty, event: Event) => void;
afterShow?: (noty: Noty) => void;
afterClose?: (noty: Noty) => void;
};
}
Использование интерфейсов позволяет строго типизировать уведомления и их события, что упрощает работу с TypeScript и предотвращает ошибки при настройке.
Noty поддерживает множество событий через опцию
callbacks. Например:
const notification = new Noty({
text: 'Уведомление с событиями',
type: 'info',
callbacks: {
onShow: (noty) => console.log('Показ уведомления', noty),
onClose: (noty) => console.log('Закрытие уведомления', noty),
onClick: (noty, event) => console.log('Клик по уведомлению', event)
}
});
notification.show();
TypeScript позволяет проверять сигнатуры функций, что снижает вероятность ошибок при передаче событийных колбэков.
Для TypeScript-проектов анимации можно задавать как строкой, так и функцией:
const notification = new Noty({
text: 'Анимация открытия и закрытия',
type: 'success',
animation: {
open: 'animated bounceInRight',
close: 'animated bounceOutRight'
},
timeout: 2000
});
notification.show();
Использование функций анимации предоставляет возможность программного управления процессом анимации:
const notification = new Noty({
text: 'Кастомная анимация',
animation: {
open: (promise) => {
console.log('Начало анимации');
promise(resolve => setTimeout(resolve, 500));
},
close: (promise) => {
console.log('Закрытие уведомления');
promise(resolve => setTimeout(resolve, 500));
}
}
});
notification.show();
Noty позволяет задавать глобальные параметры через метод
Noty.overrideDefaults:
Noty.overrideDefaults({
layout: 'bottomRight',
theme: 'metroui',
timeout: 4000,
progressBar: true
});
После этого все создаваемые уведомления будут использовать эти значения по умолчанию, если не переопределены локально.
Можно создать вспомогательные функции для генерации уведомлений с предопределенными типами:
type NotificationType = 'success' | 'error' | 'info' | 'warning';
function notify(message: string, type: NotificationType = 'info') {
new Noty({ text: message, type, timeout: 3000, progressBar: true }).show();
}
notify('Данные успешно сохранены', 'success');
notify('Произошла ошибка', 'error');
TypeScript обеспечивает проверку значений type, исключая
возможность передачи неверного типа уведомления.
Noty уведомления можно интегрировать с асинхронными процессами:
async function saveData() {
const notification = new Noty({ text: 'Сохраняем данные...', type: 'info', timeout: false }).show();
try {
await fetch('/api/save', { method: 'POST' });
notification.setText('Данные успешно сохранены');
notification.setType('success');
notification.setTimeout(3000);
} catch (err) {
notification.setText('Ошибка при сохранении');
notification.setType('error');
notification.setTimeout(3000);
}
}
Методы setText, setType и
setTimeout позволяют динамически управлять уведомлениями
после их создания, полностью поддерживая строгую типизацию
TypeScript.
В проектах на React уведомления Noty могут быть использованы в компонентах с помощью эффектов:
import React from 'react';
import Noty from 'noty';
const MyComponent: React.FC = () => {
const handleClick = () => {
new Noty({ text: 'Кликнут элемент', type: 'info', timeout: 2000 }).show();
};
return <button onCl ick={handleClick}>Показать уведомление</button>;
};
Типизация гарантирует, что все параметры уведомлений и события будут корректны, а автодополнение облегчает работу с библиотекой.