Typescript
Créez un fichier adsgram.d.ts et ajoutez-le au dossier types ou au dossier existant avec les déclarations de types.
INFO
Si vous utilisez nos packages npm spécifiques au framework (React ou Vue), le support TypeScript est inclus par défaut et aucune déclaration de type manuelle n'est nécessaire.
Typage de l'API AdsGram
ts
export interface ShowPromiseResult {
done: boolean;
description: string;
state: 'load' | 'render' | 'playing' | 'destroy';
error: boolean;
}
type BannerType = 'RewardedVideo' | 'FullscreenMedia';
interface AdsgramInitParams {
blockId: string;
debug?: boolean;
debugBannerType?: BannerType;
}
type EventType =
| 'onReward'
| 'onComplete'
| 'onStart'
| 'onSkip'
| 'onBannerNotFound'
| 'onNonStopShow'
| 'onTooLongSession'
| '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;
};
}
}Typage pour <adsgram-task> dans les projets react/preact
Ajoutez le code suivant à adsgram.d.ts pour décrire les types pour l'utilisation du composant web adsgram-task :
ts
import { DOMAttributes } from "react";
type CustomElement<T> = Partial<T & DOMAttributes<T> & { children: any }> &
LibraryManagedAttributes;
declare module "react/jsx-runtime" {
namespace JSX {
interface IntrinsicElements extends JSXInternal {
"adsgram-task": CustomElement<HTMLDivElement>;
}
}
}ts
import { JSXInternal, LibraryManagedAttributes } from 'preact/src/jsx';
import DOMAttributes = JSXInternal.DOMAttributes;
type CustomElement<T> = Partial<T & DOMAttributes<T> & { children: any }> &
LibraryManagedAttributes;
declare module "preact/jsx-runtime" {
namespace JSX {
interface IntrinsicElements extends JSXInternal {
"adsgram-task": CustomElement<HTMLDivElement>;
}
}
}Il n'est pas nécessaire d'ajouter ces types pour vue ou vanilla js.