Для интеграции Tippy.js в проект на TypeScript необходимо корректно настроить окружение, чтобы обеспечить строгую типизацию и автодополнение при работе с библиотекой.
mkdir tippy-typescript
cd tippy-typescript
npm init -y
Это создаёт базовый package.json для управления
зависимостями.
npm install typescript ts-node @types/node --save-dev
npx tsc --init
Файл tsconfig.json содержит основные настройки
компиляции TypeScript. Рекомендуется включить строгую проверку
типов:
{
"compilerOptions": {
"target": "ES6",
"module": "ESNext",
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
}
}
npm install tippy.js
npm install @types/tippy.js --save-dev
Типы позволяют использовать автокомплит и проверку параметров в редакторе, обеспечивая безопасную интеграцию Tippy.js с TypeScript.
Для работы с Tippy.js в TS можно использовать стандартный модульный импорт:
import tippy, { Instance, Props } from 'tippy.js';
import 'tippy.js/dist/tippy.css';
tippy — основной конструктор тултипов.Instance — интерфейс экземпляра тултипа.Props — интерфейс параметров конфигурации.Пример создания простого тултипа:
const button = document.querySelector<HTMLButtonElement>('#myButton');
if (button) {
const tooltip: Instance<Props> = tippy(button, {
content: 'Привет, Tippy.js!',
placement: 'top',
animation: 'scale',
});
}
Здесь Instance<Props> гарантирует, что
конфигурация соответствует типам Tippy.js.
TypeScript позволяет расширять стандартные типы Tippy.js для собственных плагинов или нестандартных опций:
interface CustomTippyProps extends Props {
delayShow?: number; // кастомная опция
}
const customTooltip: Instance<CustomTippyProps> = tippy(button!, {
content: 'Кастомный тултип',
delayShow: 200,
});
Такой подход предотвращает ошибки при передаче новых параметров.
При использовании Webpack, Vite или Parcel рекомендуется:
ts-loader для Webpack, встроенный TS-плагин для
Vite).tsconfig.json:"module": "ESNext",
"moduleResolution": "node",
"esModuleInterop": true
import 'tippy.js/dist/tippy.css';
TypeScript обеспечивает строгую проверку типов при динамическом создании тултипов:
document.querySelectorAll<HTMLButtonElement>('.tooltip-btn').forEach(btn => {
tippy(btn, {
content: btn.dataset.tooltip ?? 'Default tooltip',
placement: 'bottom',
});
});
Использование дженериков <HTMLButtonElement>
гарантирует, что элементы соответствуют ожидаемому типу.
HTMLButtonElement,
HTMLDivElement).strict режим компилятора для предотвращения
ошибок в рантайме.Tippy.js поддерживает плагины, например
followCursor:
import tippy, { followCursor } from 'tippy.js';
tippy(button!, {
content: 'Следующий курсор!',
plugins: [followCursor],
followCursor: true,
});
Типизация гарантирует, что plugins принимает только
валидные плагины, а параметры followCursor корректны.
TypeScript вместе с @types/tippy.js позволяет
использовать автодополнение всех параметров:
placement: ‘top’ | ‘bottom’ | ‘left’ | ‘right’animation: ‘shift-away’ | ‘scale’ | ‘fade’delay: number | [number, number]interactive: booleanЭто уменьшает вероятность ошибок конфигурации и ускоряет разработку.
Наличие строгой типизации, автодополнения и интерфейсов делает работу с Tippy.js в TypeScript безопасной и предсказуемой, особенно в больших проектах с множеством тултипов и динамических элементов.