Работа с 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.