vibration.d.ts

Обзор

Файл vibration.d.ts содержит объявления типов (TypeScript declarations) для взаимодействия с API вибрации браузера и Telegram Web App API. Его основное назначение — обеспечить поддержку автодополнения, проверки типов и документации для функций, связанных с вибрацией и тактильной отдачей, а также для управления основными элементами интерфейса Telegram Web App.

Файл определяет интерфейсы для:

Это помогает разработчикам безопасно использовать эти функциональные возможности в TypeScript-проектах, гарантируя корректность параметров и возвращаемых значений.


Подробное описание интерфейсов и методов

1. Web Vibration API

Интерфейс Navigator

interface Navigator {
  vibrate(pattern: number | number[]): boolean;
}

Интерфейс NavigatorVibration

interface NavigatorVibration {
  vibrate(pattern: number | number[]): boolean;
}

Объявление переменной

declare let navigator: Navigator & NavigatorVibration;

2. Telegram Web App API

Интерфейс TelegramWebApp

Предоставляет набор методов и свойств для работы с Telegram Web App, включая управление тактильной отдачей, кнопками и жизненным циклом.


Свойство HapticFeedback
HapticFeedback: {
  impactOccurred(style: 'light' | 'medium' | 'heavy' | 'rigid' | 'soft'): void;
  notificationOccurred(type: 'error' | 'success' | 'warning'): void;
  selectionChanged(): void;
};

Основные методы жизненного цикла
ready(): void;
expand(): void;
close(): void;

Свойство MainButton
MainButton: {
  text: string;
  color: string;
  textColor: string;
  isVisible: boolean;
  isActive: boolean;
  show(): void;
  hide(): void;
  enable(): void;
  disable(): void;
  showProgress(leaveActive?: boolean): void;
  hideProgress(): void;
  setText(text: string): void;
  onClick(callback: () => void): void;
  offClick(callback: () => void): void;
};

Свойство BackButton
BackButton: {
  isVisible: boolean;
  show(): void;
  hide(): void;
  onClick(callback: () => void): void;
  offClick(callback: () => void): void;
};

Интерфейс Window

interface Window {
  Telegram?: {
    WebApp: TelegramWebApp;
  };
}

Важные детали реализации и взаимодействия


Взаимодействие с другими частями системы


Mermaid диаграмма — Структура интерфейсов

classDiagram
    class Navigator {
        +vibrate(pattern: number | number[]): boolean
    }
    class NavigatorVibration {
        +vibrate(pattern: number | number[]): boolean
    }
    Navigator <|-- Navigator & NavigatorVibration

    class TelegramWebApp {
        +ready(): void
        +expand(): void
        +close(): void
    }

    class HapticFeedback {
        +impactOccurred(style: string): void
        +notificationOccurred(type: string): void
        +selectionChanged(): void
    }

    class MainButton {
        +text: string
        +color: string
        +textColor: string
        +isVisible: boolean
        +isActive: boolean
        +show(): void
        +hide(): void
        +enable(): void
        +disable(): void
        +showProgress(leaveActive?: boolean): void
        +hideProgress(): void
        +setText(text: string): void
        +onClick(callback: () => void): void
        +offClick(callback: () => void): void
    }

    class BackButton {
        +isVisible: boolean
        +show(): void
        +hide(): void
        +onClick(callback: () => void): void
        +offClick(callback: () => void): void
    }

    TelegramWebApp "1" *-- "1" HapticFeedback : has
    TelegramWebApp "1" *-- "1" MainButton : has
    TelegramWebApp "1" *-- "1" BackButton : has

Итог

Файл vibration.d.ts — это декларация типов для работы с вибрацией устройства и Telegram Web App API. Он предоставляет строгие интерфейсы для вызова системных функций вибрации и управления элементами UI Telegram Web App (кнопками, тактильной обратной связью, жизненным циклом). Использование этого файла в TypeScript-проектах повышает стабильность, удобство разработки и снижает риск ошибок при интеграции с этими API.