Skip to content

Работа с TypeScript: Создание объявления типов AdsGram

Для интеграции AdsGram с использованием TypeScript создайте файл adsgram.d.ts и добавьте его в папку types или существующую папку с объявлениями типов.

ts
export interface ShowPromiseResult {
  done: boolean; // true, если реклама досмотрена до конца, иначе false
  description: string; // описание события
  state: 'load' | 'render' | 'playing' | 'destroy'; // текущее состояние баннера
  error: boolean; // true, если произошло событие ошибки, иначе false
}

type BannerType = 'RewardedVideo' | 'FullscreenMedia';

interface AdsgramInitParams {
  blockId: string; // уникальный идентификатор рекламного блока
  debug?: boolean; // debug режим (опционально)
  debugBannerType?: BannerType; // тип тестового баннера (опционально)
}

type EventType =
  | 'onReward' // пользователь получил награду за просмотр рекламы
  | 'onComplete' // пользователь досмотрел Interstitial баннер или закрыл его
  | 'onStart' // первый кадр баннера отображён
  | 'onSkip' // пользователь пропустил рекламу
  | 'onBannerNotFound'  // баннер для показа отсутствует
  | 'onNonStopShow' // пользователь пытается посмотреть несколько реклам подряд
  | 'onError'; // ошибка при рендере или воспроизведении рекламы
type HandlerType = () => void; // функция обратного вызова для событий

export interface AdController {
  show(): Promise<ShowPromiseResult>; // показывает рекламу
  addEventListener(event: EventType, handler: HandlerType): void; // подписывает на событие
  removeEventListener(event: EventType, handler: HandlerType): void; // отписывает от события
  destroy(): void; // прекращает показ рекламы и очищает ресурсы
}

declare global {
    interface Window {
      Adsgram?: {
        init(params: AdsgramInitParams): AdController; // инициализация AdsGram
      };
    }
}

Примечания

  • Типы событий (EventType):
    Эти типы описывают события, на которые можно подписаться с помощью метода addEventListener.
  • Глобальное объявление (global):
    Указывает, что Adsgram доступен в глобальном объекте window.

Информация о пакетах типов
В будущем AdsGram планирует выпустить пакет с официальными типами. Пока что используйте этот файл для работы с TypeScript.